Qt 的專案檔
前言
在之前的 Qt 的拖拉 widget 與事件 中介紹了基本的應用,但專案檔並沒有介紹到,在此把學習的過程做個紀錄。內容
Qt 的專案檔附檔名為"pro",就拿上次在 Qt 的拖拉 widget 與事件 裡所使用的專案來介紹,在 Qt Creator 打開它會看到以下QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++11 # The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ main.cpp \ mainwindow.cpp HEADERS += \ mainwindow.h FORMS += \ mainwindow.ui # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target
內容其實就是個類似 Linux 的 makefile ,但並不一樣,所以 Qt 稱為 qmake 。這裡將常用的變數做個介紹
DEFINES:
這個變數是增加前置處理的定義用的,可以自己增加,範例如下
DEFINES += MY_DEFINE1 DEFINES += MY_DEFINE2
SOURCES:
這裡新增的是要編譯的 .cpp 或 .c 檔,要新增多個檔案的話可以用"\"來區隔,而且支援相對路徑,範例如下
SOURCES += \ main.cpp \ ../myLib.cpp
HEADERS:
這個變數類似 SOURCES ,但新增的是 .h 檔,一樣用"\"來區隔來新增多個檔案,一樣支援相對路徑。
FORMS:
這個新增的是 UI 的設計檔。
INCLUDEPATH:
這個變數可以新增 include 的路徑,支援相對路徑,範例如下
INCLUDEPATH += ../include INCLUDEPATH += ../../myLib
LIBS:
這個變數用來新增 .lib 檔,用法有點特別,因為要連命令參數一起輸入,而且可以新增路徑,範例如下
LIBS += -L../lib -lTestLib
"-L"後直接輸入要新增的路徑,無須空白,"-l"後也不須空白,且不加附檔名。
執行階段程式庫:
QMAKE_CFLAGS_DEBUG += /MTd QMAKE_CXXFLAGS_DEBUG += /MTd
接著介紹一下實用的內建 function ,
message():
這個是拿來列印訊息用的,具體的用法如下
message("Hello qmake") message( $${SOURCES} )
第一個範例會直接列印"Hello qmake",第二個範例是列印變數的內容,列印"SOURCES"這個變數的內容, 這個要注意的是格式為 $${ (變數名稱) } 。
CONFIG():
這個 function 用來對 Debug 與 Release 版做出差異,並注意 function 名稱為大寫,範例如下
CONFIG( debug , debug|release){ DEFINES += BUILD_DEBUG } CONFIG( release , debug|release){ DEFINES += BUILD_RELEASE }
contains():
這個 function 用來檢查變數內是否含有某些內容,最基本的用法是用來判斷不同平台建置時給予不同的行為,範例如下
//Build for Windows contains( QMAKE_HOST.os , Windows ){ DEFINES += BUILD_WINDOWS } //Build for Linux contains( QMAKE_HOST.os , Linux ){ DEFINES += BUILD_LINUX } //Build for 64 bit contains( QT_ARCH , x86_64 ){ DEFINES += BUILD_OS64 }function 的第一個變數是被尋找的變數,第二個則是要尋找的內容,要注意都有大小寫得分別,Qt 的預設變數可以在 [ Qt ] Variables 裡查詢。
自訂變數的用法如下
MY_VAR = test message( $${MY_VAR} )
變數的定義與 makefile 一樣,但如果要指名內容時要注意 qmake 特有的格式。
本篇記錄了目前用的到的變數與 function ,如果有新的變數也就直接加在這篇,方便日後查詢。
參考資料
[ Qt ] Variables[ Qt ] Test Functions
沒有留言:
張貼留言