概述
該篇博客主要總結梳理Qt項目在pro文件中如何實現條件編譯。
通過定義宏
在pro文件中可以通過DEFINES
定義宏變量,如下述代碼所示:
DEFINES += TEST
當在pro文件中定義上述宏後,可以通過以下代碼判斷是否定義該宏:
contains(DEFINES, TEST)
{
message('-->>(DEFINES, TEST)')
}
else
{
message('-->>(DEFINES, TEST) nothing')
}
若在pro文件中添加上述代碼,編譯時在qt creator的應用程序輸出窗口中看到-->>(DEFINES, TEST
。由此可以看出通過宏定義和contains可以實現條件編譯。如下述代碼所示:
DEFINES += static
if(contains(DEFINES, static)) { #contains和{必須在同一行,否則報錯
CONFIG += static
}else{
CONFIG += shared
}
上述代碼中通過定義宏static
,實現添加配置從而控制編譯靜態庫。
通過CONFIG配置
CONFIG 變量用於指定工程配置和編譯器選項,通常取debug,release,dll等值,也可以自定義選項值, CONFIG變量的每個選項都可以用於條件判斷。
CONFIG += static
static {
CONFIG += static
} else {
CONFIG += shared
}