關鍵字:常用變量
一、TEMPLATE變量:
生成Makefile采用的模板。以下是可供選擇的模板:
app:建立一個應用程序Makefile,這個也是默認值,沒有指定模板是默認是這個。
lib:建立一個庫的Makefile。
vcapp:建立一個應用程序的visual studio項目文件。
vclib:建立一個庫的visual studio項目文件。
subdirs:創建一個能夠進入子目錄並且為之生成為它調用make的Makefile。需要在后面用SUBDIRS=XX來指定那些子目錄。
1、app模板:
app模板告訴qmake為建立一個應用程序生成一個Makefile。當使用這個模板時,下面這些qmake系統變量是被承認的。你應該在你的.pro文件中使用它們來為你的應用程序指定特定信息。
HEADERS:需要包含的頭文件的列表。
SOURCES:需要的源文件的列表。
FORMS:需要的.ui文件的列表。
LEXSOURCES:所有lex源文件的列表。
YACCSOURCES:所有yacc源文件的列表。
TARGET:可執行應用程序的名稱。默認值為項目文件的名字。
DESTDIR:放置可執行程序目標的目錄。
OBJECTS_DIR:放置obj中間文件的目錄。
MOC_DIR: moc轉換文件路徑。
RCC_DIR: 資源文件路徑。
UI_DIR:ui文件轉換的路徑。
RESOURCES:需要包含的資源文件。
LIBS:依賴庫的路徑和名稱 -L{xxdirxx} -l{xxnamexx}。
LIBEXT: 產生lib的后綴。
DEFINES:應用程序所需的額外的宏定義列表。
INCLUDEPATH:應用程序所需的額外的包含路徑列表。
DEPENDPATH:應用程序所依賴的搜索路徑。
VPATH:尋找補充文件的搜索路徑。
DEF_FILE:只有Windows需要:應用程序所要連接的.def文件。
RC_FILE:只有Windows需要:應用程序的資源文件。
RES_FILE:只有Windows需要:應用程序所要連接的資源文件。
TRANSLATIONS: 多國語言支持文件。
INSTALLS: 要安裝的文件。
target.path: 安裝的路徑。
詳細請參考Qt幫助條目:qmake Variable Reference。
2、lib模板:
lib模板告訴qmake為建立一個庫而生成makefile。當使用這個模板時,除了“app”模板中提到系統變量,還有一個VERSION是被支持的。你需要在為庫指定特定信息的.pro文件中使用它們。
VERSION:目標庫的版本號,例如:1.2.3。
3、subdirs模板:
subdirs模板告訴qmake生成一個makefile,它可以進入到特定子目錄並為這個目錄中的項目文件生成makefile並且為它調用make。這個模板只有一個系統變量SUBDIRS可以被識別。
SUBDIRS:這個變量中包含了所要處理的含有項目文件的子目錄的列表。這個項目文件的名稱是和子目錄同名的,這樣qmake就可以發現它。例如,如果子目里是“subapp”,那么在這個目錄中的項目文件應該被叫做subapp.pro。
二、CONFIG變量:
配置變量,指定了編譯器所要使用的選項和所需要鏈接的庫。
1、控制編譯器標志的選項:
release:應用程序將以release模式連編,如果“debug”被指定,它將被忽略。
debug:應用程序將以debug模式連編。
warn_on:編譯器會輸出盡可能多的警告信息,如果“warn_off”被指定,它將被忽略。
warn_off:編譯器會輸出盡可能少的警告信息。
2、控制需要連接的庫的選項:
qt:應用程序是一個Qt應用程序,並且Qt庫將會被鏈接。
thread:應用程序是一個多線程程序。
x11:應用程序是一個x11應用程序或者庫。
windows:只用於app模板,應用程序是一個windows下的窗口應用程序。
console:只用於app模板,應用程序是一個windows下的控制台應用程序。
dll:只用於lib模板,庫是一個共享庫。
staticlib:只用於lib模板,庫是一個靜態庫。
plugin:只用於lib模板,庫是一個插件,這將會使dll選項生效。
例如:CONFIG += qt debug,使用qt庫的應用程序,debug版本。
3、注意事項:必須使用“+=”,不要使用“=”,否則原來的設置會被清除。
三、變量用法:
1、自定義變量:
MY_VARIABLE = value
定義了一個變量MY_VARIABLE,並將值設置為value。
2、變量值的傳遞:
可以通過在其它任何一個變量的變量名前加$$來把這個變量的值分配給當前的變量。例如:
MY_DEFINES = $$DEFINES
現在MY_DEFINES變量包含了項目文件在這點時DEFINES變量的值。這也和下面的語句一樣:
MY_DEFINES = $${DEFINES}