我有一個這樣的代碼:
myproject.pro
TEMPLATE = subdirs
DEFINES = mydefine
SUBDIRS = \
libs/mylib \
myapp
mylib.pro
contains(DEFINES, mydefine) {
do something
}
else {
do something else
}
有沒有辦法將定義“mydefine”注入mylib?謝謝
uj5u.com熱心網友回復:
不幸的是,你不能這樣做。
定義只是編譯器宏。您的 IDE 通過考慮這些宏來編譯您的代碼。我的意思是:
如果你寫這樣的東西:
int A = 5;
#define SOMETHING
#ifdef SOMETHIN //intentionally misspelled
A = 10;
#endif
std::cout << A ;
您的編譯器將看到:
int A = 5;
// compiler : Okayy.. I don't want to compile that
std::cout << A;
它會根據它看到的內容生成一個可執行檔案或庫。
但您實際上可以編譯和生成兩個庫,并在運行時動態加載其中一個。或者;
您再次生成兩個名為 myLibwithDef 和 myLibwithoutDef 的不同庫,并在您想要使用它們的地方執行以下操作:
#ifdef Something
LoadDynamicLibraryWithDef()
#else
LoadDynamicLibraryWithoutDef()
#endif
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/345125.html
上一篇:如何將QAction設定為在QToolBar內具有透明背景
下一篇:C 行程間共享兩串資料
