Để giữ cho dự án Qt của tôi được sắp xếp một chút (sử dụng Qt Creator), tôi có một tệp .pro và nhiều tệp .pri. Mới đây, tôi đã thêm một lớp vào một trong các tệp .pri của tôi có cùng tên tệp như một lớp đã tồn tại trong một tệp .pri riêng biệt.Tên tệp Qt MOC Va chạm sử dụng nhiều tệp .pri
Cấu trúc tệp và makefiles được tạo bởi qmake dường như không biết gì về va chạm tên tệp xảy ra. Các tập tin moc_ * được tạo ra tất cả được ném vào cùng một thư mục con (hoặc là phát hành hoặc gỡ lỗi, tùy thuộc) và một kết thúc ghi đè lên phần còn lại. Khi tôi cố gắng thực hiện dự án, tôi nhận được một số cảnh báo giống như sau:
Makefile.Release:318: warning: overriding commands for target `release/moc_file.cpp`
Và dự án không liên kết.
Đây là một ví dụ đơn giản về những gì tôi đang nói đến.
Cấu trúc thư mục:
+ project_dir | + subdir1 | | - file.h | | - file.cpp | + subdir2 | | - file.h | | - file.cpp | - main.cpp | - project.pro | - subdir1.pri | - subdir2.pri
Nội dung project.pro:
TARGET = project
TEMPLATE = app
include(subdir1.pri)
include(subdir2.pri)
SOURCES += main.cpp
Nội dung subdir1.pri:
HEADERS += subdir1/file.h
SOURCES += subdir1/file.cpp
Nội dung subdir2.pri:
HEADERS += subdir2/file.h
SOURCES += subdir2/file.cpp
Có cách nào để nói qmake tạo một hệ thống đặt các tệp moc_ * từ các tệp .pri riêng biệt vào các thư mục con riêng biệt không?
Tôi không nhất thiết phải đồng ý với lập luận nhầm lẫn của tôi bao gồm báo cáo thường sẽ có dạng: #include "subdir1/file.h" Nontheless, bạn dường như đúng. Các tên tập tin duy nhất dường như là cách duy nhất để đến đây. – Stephen
Tôi tin rằng các tập tin moc và các tập tin đối tượng sẽ không va chạm bây giờ nếu bạn đã theo tôi .. Trái ngược với bình luận của bạn mặc dù :) Đúng tôi nếu tôi là sai .. – liaK