QT---之.pro檔案結構
Qt_Pro詳解
在QT中,有一個工具qmake可以生成一個makefile檔案,它是由.pro檔案生成而來的,.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、#指定生成的應用程式放置的目錄
DESTDIR+= ../bin
4、#指定生成的應用程式名,也可以順帶指定生成的應用程式路徑,比如 TARGET=../bin/sendMsgToAuxSys
TARGET= pksystem
值得注意的是:當我們build後, pksystem會在Debug及Release檔案下生成,所以 ../
5、#配置資訊 CONFIG用來告訴qmake關於應用程式的配置資訊。
CONFIG+= qt warn_on release
在這裡使用“+=”,是因為我們新增我們的配置選項到任何一個已經存在中。這樣做比使用“=”那樣替換已經指定的所有選項是更安全的。
A> qt部分告訴qmake這個應用程式是使用Qt來連編的。這也就是說qmake在連線和為編譯新增所需的包含路徑的時候會考慮到Qt庫的。
B> warn_on部分告訴qmake要把編譯器設定為輸出警告資訊的。
C> release部分告訴qmake應用程式必須被連編為一個釋出的應用程式。在開發過程中,程式設計師也可以使用debug來替換release
6、#指定uic命令將.ui檔案轉化成ui_*.h檔案的存放的目錄
UI_DIR+= forms
7、#指定rcc命令將.qrc檔案轉換成qrc_*.h檔案的存放目錄
RCC_DIR+= ../tmp
8、#指定moc命令將含Q_OBJECT的標頭檔案轉換成標準.h檔案的存放目錄
MOC_DIR+= ../tmp
9、#指定目標檔案(obj)的存放目錄
OBJECTS_DIR+= ../tmp
10、#程式編譯時依賴的相關路徑
DEPENDPATH+= . forms include qrc sources
11、#標頭檔案包含路徑
INCLUDEPATH+= .
#qmake時產生的資訊,【$${a}讀取變數a的字串】,【$$(PATH)讀取環境變數PATH】 #message($$(PATH))
12、#原始檔編碼方式
CODECFORSRC= GBK
13、#工程中包含的標頭檔案
HEADERS+= include/painter.h
14、#工程中包含的.ui設計檔案
FORMS+= forms/painter.ui
15、#工程中包含的原始檔
SOURCES+= sources/main.cpp sources/painter.cpp
16、#工程中包含的資原始檔
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
17# 平臺相關性處理 我們在這裡需要做的是根據qmake所執行的平臺來使用相應的作用域來進行處理。
為Windows平臺新增的依賴平臺的檔案的簡單的作用域看起來就像這樣:
win32 { SOURCES += hello_win.cpp }
當你已經建立好你的專案檔案,生成Makefile就很容易了,你所要做的就是先到你所生成的專案檔案那裡然後輸入:
Makefile可以像這樣由“.pro”檔案生成:
qmake -oMakefile hello.pro
對於VisualStudio的使用者,qmake也可以生成“.dsp”檔案,例如:
qmake -tvcapp -o hello.dsp hello.pro
qmake 常用命令:
qmake -project //生成pro檔案,自動檢查c/c++程式檔案
qmake -t lib //生產把原始碼編譯成庫的pro工程檔案
qmake -tp vc //根據pro檔案生成vc的工程檔案,qt commericial有一個繫結到vs的工具,可以在選單欄直接開啟
qmake -r xxx.pro "CONFIG+=debug" //遞迴生成makefile
moc //包含Q_OBJECT檔案轉換器
rcc //Qt resource compiler
uic //Qt ui file translator,to .h file.
Qt 常用巨集:
平臺相關
Q_WS_WIN //window系統
Q_WS_X11 //xwindow系統
Q_WS_MAC //蘋果mac系統
Q_WS_SOL //sun的solaris系統
其它
QT_OPENGL_SUPPORT //是否支援opengl
QT_VERSION //qt的版本,如 if QT_VERSION > 0x040601(qt > 4.6.1)
QT_VERSION_STR //qt版本的字串
QT_POINTER_SIZE //指標的位元組寬度 32bit=4,64bit=8
QT_REQUIRE_VERSION //用在程式碼中,比如QT_REQUIRE_VERSION(argc, argv, "4.0.2");
global常用函式
T qAbs(const T & value) //返回絕對值
void qCritical(const char * msg, ...) //
void qDebug(const char * msg, ... ) //
void qFatal(const char * msg, ... ) //輸出錯誤資訊
qMax(const T & value1,const T & value2 )//
qMin(const T & value1,const T & value2 ) //
pro 檔案格式
#: 表示到行尾均為注視,被忽略
include: 可以包含別的文字檔案,一般為*pri 例如 #include "../global.pri"
scope{;;}: 預定義 ,如win32{} 表示在win32平臺下的定義,其它忽略
win32/unix/linux-g++/linux-g++-64: 平臺巨集
DESTDIR: 產生目標檔案路徑
MOC_DIR: moc轉換檔案路徑
RCC_DIR: 資原始檔路徑
UI_DIR:ui檔案轉換的路徑
LIBEXT: 產生lib的字尾
QMAKE_CFLAGS_DEBUG:
QMAKE_CXXFLAGS_DEBUG:
QMAKE_CFLAGS_RELEASE:
QMAKE_CXXFLAGS_RELEASE:
TEMPLATE: 決定生成makefile採用的模板,
=lib 表示庫檔案
=app 表示生成可執行檔案
=subdirs 表示處理子目錄(在下面用SUBDIRS += **來指定那些子目錄)
TARGET: 指定要生成的目標檔名
Qt+=: 新增額外的模組支援,例如Qt -= QtCore;Qt += network,phonon,xml,thread
DEFINES: 新增額外的巨集定義,如win下需要的export等
DEPENDPATH: 新增以來的路徑
INCLUDEPATH: 新增標頭檔案包含路徑
HEADERS: 需要包含的標頭檔案
SOURCES: 需要包含的原始檔
FORMS: 需要包含的ui檔案
RESOURCES:需要包含的資原始檔
LIBS:依賴庫的路徑和名稱 -L{xxdirxx} -l{xxnamexx}
CONFIG: 新增配置,如warn_on debug_and_release plugin
TRANSLATIONS: 多國語言支援檔案
INSTALLS: 要安裝的檔案
target.path: 安裝的路徑
#在pro檔案支援environment variables和自定義變數
#如sources.file +=
SOURCESSOURCES
HEADERS
#sources.path =
DESTIN_DIR
#INSTALLS += target source
defineReplace(xxx): xxx為變數 ,此函式可以返回一個變數值如:DESTIN_DIR #INSTALLS += target source defineReplace(xxx): xxx為變數 ,此函式可以返回一個變數值如:
xxx()
exists(file1,file2){error()}:檢查檔案是否存在