天天看點

Qt開發: Pro檔案使用說明

1. 注釋

從“#”開始,到這一行結束。

2. 模闆變量告訴qmake為這個應用程式生成哪種makefile。下面是可供使用的選擇:

TEMPLATE = app

A> app -建立一個應用程式的makefile。這是預設值,是以如果模闆沒有被指定,這個将被使用。

B> lib - 建立一個庫的makefile。

C> vcapp - 建立一個應用程式的VisualStudio項目檔案。

D> vclib - 建立一個庫的VisualStudio項目檔案。

E> subdirs -這是一個特殊的模闆,它可以建立一個能夠進入特定目錄并且為一個項目檔案生成makefile并且為它調用make的makefile。

3. 基礎檔案設定

CODECFORSRC = GBK   #指定源檔案編碼方式

HEADERS += include/painter.h  #工程中包含的頭檔案

FORMS += forms/painter.ui  #工程中包含的.ui設計檔案

SOURCES += sources/main.cpp sources/painter.cpp     #工程中包含的源檔案

RESOURCES += qrc/painter.qrc  #工程中包含的資源檔案

LIBS += -L folderPath  #引入的lib檔案的路徑  -L:引入路徑

Release:LIBS += -L folderPath  # release 版引入的lib檔案路徑

Debug:LIBS += -L folderPath   # Debug 版引入的lib 檔案路徑

DEFINES += XX_XX_XXX    #定義編譯選項,在.h檔案中就可以使用 :#ifdefine xx_xx_xxx

RC_FILE = xxx.icns  #程式圖示

4. 指定生成的應用程式名

TARGET = pksystem

5. 配置資訊

CONFIG用來告訴qmake關于應用程式的配置資訊。

例如 CONFIG+= qt warn_on release c++11

在這裡使用“+=”,是因為我們添加我們的配置選項到任何一個已經存在中。這樣做比使用“=”那樣替換已經指定的所有選項是更安全的。

A> qt部分告訴qmake這個應用程式是使用Qt來連編的。這也就是說qmake在連接配接和為編譯添加所需的包含路徑的時候會考慮到Qt庫的。所有的Qt庫都需要在CONFIG中添加之後才能使用,例如添加thread才能使用多線程庫。

B> warn_on部分告訴qmake要把編譯器設定為輸出警告資訊的。

C> release部分告訴qmake應用程式必須被連編為一個釋出的應用程式。在開發過程中,程式員也可以使用debug來替換release。

D> 使用C++11的特性

6. 指定生成的應用程式放置的目錄

DESTDIR += ../bin

7. 指定uic指令将.ui檔案轉化成ui_*.h檔案的存放的目錄

UI_DIR += forms

8. 指定rcc指令将.qrc檔案轉換成qrc_*.h檔案的存放目錄

RCC_DIR += ../tmp

9. 指定moc指令将含Q_OBJECT的頭檔案轉換成标準.h檔案的存放目錄

MOC_DIR += ../tmp

10. 指定目标檔案(obj)的存放目錄

OBJECTS_DIR += ../tmp

11. 程式編譯時依賴的相關路徑

DEPENDPATH += . forms include qrc sources

12. 頭檔案包含路徑

INCLUDEPATH += .

13. 執行qmake時輸出消息

message(XXX) 會在執行qmake時輸出括号中的内容

14. 擷取系統參數

如 $$(PATH) 可以讀取環境變量中的PATH

15. 平台相關性處理

我們在這裡需要做的是根據qmake所運作的平台來使用相應的作用域來進行處理。為Windows平台添加的依賴平台的檔案的簡單的作用域看起來就像這樣:

win32 {

SOURCES += hello_win.cpp

}

Linux或Unix使用作用域unix。

16. 使用系統指令

主要是使用system關鍵字

例如拷貝檔案到指定目錄

win32 {
    src_dir = $$PWD\Resources\*.*
    CONFIG(debug, debug|release) {
        dst_dir = $$OUT_PWD\\debug\\Resources\\
    } else {
        dst_dir = $$OUT_PWD\\release\\Resources\\
    }

    # dst_dir 最後的 \\ 是必須的,用來标示 xcopy 到一個檔案夾,若不存在,建立之

    # Replace slashes in paths with backslashes for Windows
    src_dir ~= s,/,\\,g
    dst_dir ~= s,/,\\,g

    !exists($$dst_dir):system(xcopy $$src_dir $$dst_dir /y /e)
}      

繼續閱讀