Qt的pro檔案并不僅僅隻是記錄檔案清單,還有很多的參數,這些參數可以實作一些自動化操作,減少很多工作量,最終生成makefile來編譯程式。常見功能有多平台庫分别導入,順序編譯多個依賴Project等等,以下做詳細說明。
1、Additional arguments:
QtCreator的Project屬性中,build step有一個Additional arguments屬性,可以設定一個參數,這個參數僅使用這個Qt-Kit時生效,例如:myPlatform=x86.
然後在pro中就可以使用這個參數了,注意,pro檔案中引用變量要使用兩個$,這個與shell不同,例如
$$PWD
$$myPlatform
參數可以直接引用,也可以做判斷。
if(equals($$myPlatform,x86)){
//x86 平台需要做的操作
}
2、常見參數
TARGET: 目标名稱,例如myApp。
TEMPLATE: 項目模闆,常見有lib(編譯成library)、app(編譯成程式)、subdirs(為主項目,包含子項目)等,示例:TEMPLATE=lib,subdirs示例如下:
TEMPLATE=subdirs
SUBDIRS += DeviceCtlSubDir/libDeviceCtl.pro \
DeviceCtlSubDir/DeviceCtl.pro \
DeviceCtlSubDir/DeviceCtl_Command.pro
CONFIG: 配置參數,可配置多個參數,是以使用+=,不要使用=。ordered參數與subdirs配合使用,表示按照排列順序編譯,預設帶有app_bundle和qt這兩個參數,是以不需要則可以-=,例如下面的表示使用console以及C++11特性(純C++,不含qt元件),不使用qt以及app。在編譯library時,還有兩個參數shared(生成動态庫)、shared_and_static build_all (同時生成動态庫合靜态庫,沒有單獨的靜态庫)
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
INCLUDEPATH: 頭檔案目錄,使用+=,例如:
INCLUDEPATH += $$PWD/lib/include
LIBS: 庫檔案,使用+=,如下:
LIBS += $$PWD/lib/lib
DESTDIR: 目标檔案檔案夾,例如app,lib等檔案。
OBJECTS_DIR: obj檔案檔案夾
MOC_DIR: 生成moc檔案所在檔案夾
UI_DIR: ui檔案生成所在檔案夾
RCC_DIR: RCC檔案生成所在檔案夾
DESTDIR = $$myINSTALL_DIR/bin
OBJECTS_DIR = $$myINSTALL_DIR/obj
MOC_DIR = $$myINSTALL_DIR/moc
UI_DIR = $$myINSTALL_DIR/ui
RCC_DIR = $$myINSTALL_DIR/rcc
3、引用其它pro檔案參數
include (../DentalPrintManager.pro),然後使用$$引用即可。
4、執行shell指令
在run qmake時執行,調用system(shell command指令)。
system(mkdir -p $$BasicStructureLibOutputIncPath)
5、輸出資訊
使用message()輸出消息,例如:message("BasicStructure $$myPlatform Build!")
6、Qt參數
Qt自身元件,例如gui、network等,以下示例:
QT += core network
QT -= gui
7、其它參數
SOURCES、HEADERS、FORMS、RESOURCES表示項目中添加的一些檔案