天天看點

【Qt】pro檔案參數

        Qt的pro檔案并不僅僅隻是記錄檔案清單,還有很多的參數,這些參數可以實作一些自動化操作,減少很多工作量,最終生成makefile來編譯程式。常見功能有多平台庫分别導入,順序編譯多個依賴Project等等,以下做詳細說明。

        1、Additional arguments:

                QtCreator的Project屬性中,build step有一個Additional arguments屬性,可以設定一個參數,這個參數僅使用這個Qt-Kit時生效,例如:myPlatform=x86.

【Qt】pro檔案參數

                然後在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表示項目中添加的一些檔案