在QT中使用qmake自動生成pro文件,如果要自己定制工程選項,則需要自行修改pro文件。
pro文件有以下關鍵字:TEMPLATE、TARGET、DESTDIR、DEPENDPATH、INCLUDEPATH、SOURCES、HEADERS、FORMS、LIBS、TRASHLATIONS、RESOURCES、CONFIG、UI_DIR、RCC_DIR、MOC_DIR、OBJECTS_DIR、DEFINES。
其中:TEMPLATE變量定義了工程的編譯模式,默認編譯為app。TEMPLATE可以為:app、lib(庫)、subdirs(多級目錄管理)等。
TARGET:生成目標的名字。如:TARGET = mylib
DESTDIR:生成目標的路徑。如:DESTDIR = ../bin/ 則目標文件的路徑為當前pro文件所在目錄的上一級的bin目錄下
DEPENDPATH:工程的依賴路徑
INCLUDEPATH:指定工程要用到的頭文件路徑,一般包括用戶自定義的頭文件路徑或沒有放入系統頭文件路徑的頭文件路徑
SOURCES:工程需要的源文件
HEADERS:工程所需要的頭文件,一般包括用戶自定義的頭文件或未放入系統頭文件路徑的頭文件
FORMS:工程要用到的ui文件(ui文件時用QT設計器生成的)
LIBS:加載動態庫文件。如:LIBS+=./mitab/libmitab.so
TRASHLATIONS:加載要用到的語言翻譯*.ts文件
RESOURCES:加載要用到的資源*.qrc文件
CONFIG:告訴qmake應用程序的配置信息:這個變量可以用來指定是生成debug模式還是release模式,也可以都生成;也可以用來打開編譯器警告(warn_on輸出盡可能多的警告信息)或者關閉(warn_off -編譯器會輸出盡可能少的警告信息);還可以用來配置要Qt加載庫,例如如果要用到Qt的多線程,則:CONFIG+=qt thread再例如配置debug或release模式:
CONFIG +=debug_and_release
CONFIG(debug,debug|release){
TARGET= hello
DESTDIR= ./debug
}else{
TARGET= hello
DESTDIR= ./release
}
如果你要在windows下面運行console:CONFIG +=console
UI_DIR:UIC將ui轉化為頭文件所存放的目錄
RCC_DIR:RCC將qrc文件轉化為頭文件所存放的目錄;
MOC_DIR:MOC命令將含Q_OBJECT的頭文件轉換為標准的頭文件存放的目錄;
OBJECTS_DIR:生成的目標文件存放的目錄;
DEFINES:應用程序所需的額外的預處理程序定義的列表#在.h文件中就可以使用:#ifdefinexx_xx_xxx;
LIBS += -L folderPath //引入的lib文件的路徑 -L:引入路徑
Release:LIBS+= -L folderPath // release 版引入的lib文件路徑
Debug:LIBS+= -L folderPath // Debug 版引入的lib 文件路徑
RC_FILE = xxx.icns //程序中所用到的圖片等資源文件;
QT是跨平台的,所以我們在不同的平台上用同一個pro文件,這要加入有關平台的信息。windows平台是win32,Linux平台是unix。
例如在Windows和Linux的動態庫文件格式是不一樣的,一個是lib文件一個是so文件:win32:LIBS+= ./mitab/mitab_i.lib unix:LiBS+= ./mitab/libmitab.so
再如:win32{SOURCES+= hello_win.cpp //win平台} unix{SOURCES+= hello_linux.cpp //unix/linux平台}
可以通過在其它任何一個變量的變量名前加$$來把這個變量的值分配給當前的變量,例如:MY_DEFINES= $$DEFINE #將DEFINE的值分配給MY_DEFINES
又如:
TARGET = myapp
UI_DIR = ../bin/$$TARGET/ui
MOC_DIR = ../bin/$$TARGET/moc
OBJECTS_DIR = ../bin/$$TARGET/objects
則uic所生成的文件在路徑../bin/myapp/ui目錄下;moc文件在../bin/myapp/moc目錄下;obj目標文件在../bin/myapp/objects目錄下。
