tôi cóp nhặt được một giải pháp cho Vấn đề của OP bằng cách sử dụng câu trả lời được đề xuất bởi @vsz trong các nhận xét được tìm thấy here.
Tôi có hai bộ, một cho máy tính để bàn địa phương và một cho các thiết bị Target_ARM, và tôi muốn có một cách dễ dàng xây dựng cho cả hai những người không phải đặc biệt sửa đổi các .pro
tập tin hoặc bất cứ điều gì khác. Tôi làm theo các câu trả lời liên quan và bổ sung như sau:
- Trong bộ hồ sơ Desktop của tôi (cho cả Debug và Release), tôi đã thêm
CONFIG+=Desktop
như một qmake
luận thêm trong bước qmake
xây dựng.
- Đối với bộ Target_ARM, tôi đã thêm
CONFIG+=Target_ARM
vào cùng một vị trí.
Bây giờ, đây là nơi mọi thứ chuyển từ câu trả lời được liên kết đến vấn đề của OP. Tôi không chỉ đơn giản muốn #define
biến ed trong mã của mình, tôi muốn thay đổi hành vi của qmake
dựa trên bộ đã chọn. Tôi không biết chức năng kiểm tra tích hợp CONFIG
có hỗ trợ khối chỉ định hay không (ví dụ: CONFIG { _several lines here_ }
), nhưng hóa ra tôi có thể sao chép và dán hàm kiểm tra CONFIG
ở trước mỗi dòng mà tôi muốn có điều kiện; trên thực tế tôi có thể chuỗi nhiều CONFIG
s với nhau, như thế này:
CONFIG(Desktop, Desktop|Target_ARM):unix:!macx:CONFIG(debug, debug|release): LIBS += /path/to/Desktop/debug/lib
else:CONFIG(Desktop, Desktop|Target_ARM):unix:!macx:CONFIG(release, debug|release): LIBS += /path/to/Destop/release/lib
Vì nó cho thấy, tuyên bố trên sẽ chạy qmake
với LIBS
con đường thích hợp tùy thuộc vào bộ và cấu hình tôi đã chọn. Desktop->debug
sẽ tạo một Makefile với /path/to/Desktop/debug/lib
trong đó trong khi Desktop->release
sẽ tạo một Makefile với /path/to/Desktop/release/lib
. Tôi có các câu lệnh tương tự cho bộ dụng cụ Target_ARM
. Dưới đây là ví dụ về việc chọn đúng INCLUDEPATH
: Cả hai thử nghiệm sẽ được đánh giá là đúng khi chọn Target_ARM->release
.
CONFIG(Target_ARM, Desktop|Target_ARM):CONFIG(release, debug|release): INCLUDEPATH += /include/path/for/Target_ARM/release
Trong tất cả, tôi đã sử dụng phương pháp này để sửa đổi LIBS, INCLUDEPATH, DEPENDPATH, and PRE_TARGETDEPS
.Tôi có 4 cấu hình có thể bao gồm đường dẫn và thư viện tùy thuộc vào bộ tôi chọn (Desktop
hoặc Target_ARM
) và cấu hình nào tôi chọn (build
hoặc release
). Khi thiết lập này được thiết lập, bạn không cần chỉnh sửa tệp .pro
, chỉ cần chọn bộ công cụ, cấu hình xây dựng của bạn, chạy qmake
, sau đó tạo lại.
Tôi không biết trên đầu của tôi nơi dữ liệu CONFIG+=Desktop
(ví dụ) được lưu trữ, nhưng tôi đoán trong tệp .pro.user
. Vì vậy, nếu ai đó kéo tệp .pro
của bạn từ một repo, họ có thể phải định cấu hình ban đầu dự án theo cách này ít nhất một lần, nhưng không phải sau đó (miễn là tệp .pro.user
vẫn tồn tại). QT thực sự cần phải có một cơ chế dễ dàng để thực hiện điều này ở phía trước và trung tâm, đặc biệt là vì một trong những điểm bán hàng của họ là tích hợp nhiều nền tảng. Nếu có một cách tốt hơn để làm điều này, tôi đã không nhìn thấy nó trên SO hoặc trong các tài liệu QT được nêu ra.
Có một câu trả lời thú vị khác tại đây: http://stackoverflow.com/questions/24912778/qtcreator-kit-specific-precompiler-macro-definitions – vsz