在QT中,有一個工具qmake可以生成一個makefile檔案,它是由項目管理檔案pro檔案生成而來,pro檔案的寫法見下表。
qmake變量
說明
舉例
#xxxx
注釋,從“#”開始,到這一行結束
#for windows
TEMPLATE
子產品設定
TEMPLATE = app
app(生成應用程式)( 預設、常用)
lib(生成庫檔案)(常用)
vcapp -建立一個應用程式的VisualStudio項目檔案
vclib -建立一個庫的VisualStudio項目檔案
subdirs(生成makefile檔案編譯subdirs指定的子檔案夾)(不常用)
DESTDIR
指定生成的應用程式放置的目錄(建議用相對目錄)
DESTDIR += ../bin
TARGET
指定目标檔案名(建議跟項目檔案同名)
TARGET = filename
如果不設定該項目,目标名會被自動設定為跟項目檔案一樣的名稱
CONFIG
配置資訊
CONFIG+= qt warn_on release
編譯器标志:
release -應用程式将以release模式連編。如果“debug”被指定,它将被忽略。
debug - 應用程式将以debug模式連編。
warn_on -編譯器會輸出盡可能多的警告資訊。如果“warn_off”被指定,它将被忽略。
warn_off -編譯器會輸出盡可能少的警告資訊。
連編的庫/應用程式的類型:
qt - 應用程式是一個Qt應用程式,并且Qt庫将會被連接配接。
thread - 應用程式是一個多線程應用程式。
x11 - 應用程式是一個X11應用程式或庫。
windows -隻用于“app”模闆:應用程式是一個Windows下的視窗應用程式。
console -隻用于“app”模闆:應用程式是一個Windows下的控制台應用程式。
dll - 隻用于“lib”模闆:庫是一個共享庫(dll)。
staticlib -隻用于“lib”模闆:庫是一個靜态庫。
plugin - 隻用于“lib”模闆:庫是一個插件,這将會使dll選項生效。
QT
加入庫子產品
QT += xml
UI_DIR
指定uic指令将.ui檔案轉化成ui_*.h檔案的存放的目錄
UI_DIR += forms
RCC_DIR
指定rcc指令将.qrc檔案轉換成qrc_*.h檔案的存放目錄
RCC_DIR += ../tmp
INCLUDEPATH
頭檔案包含路徑
INCLUDEPATH += .
HEADERS
指定頭檔案
HEADERS = hello.h
HEADERS += hello.h
SOURCES
指定源檔案
SOURCES = *.cpp
對于多源檔案,可用空格分開
SOURCES = 1.cpp 2.cpp 3.cpp
或者每一個檔案可以被列在一個分開的行裡面,通過反斜線另起一行
SOURCES = hello.cpp \
main.cpp
一個更冗長的方法是單獨地列出每一個檔案,就像這樣
SOURCES += hello.cpp
SOURCES += main.cpp
FORMS
工程中包含的.ui設計檔案
FORMS += forms/painter.ui
RESOURCES
工程中包含的資源檔案
RESOURCES += qrc/painter.qrc
OBJECTS_DIR
指定目标檔案(obj)的存放目錄
OBJECTS_DIR += ../tmp
INTERFACES
添加界面檔案(ui)
INTERFACES = filename.ui
MOC_DIR
指定moc指令将含Q_OBJECT的頭檔案轉換成标準.h檔案的存放目錄
MOC_DIR += ../tmp
DEPENDPATH
程式編譯時依賴的相關路徑
DEPENDPATH += . forms include qrc sources
CODECFORSRC
源檔案編碼方式
CODECFORSRC = GBK
win32{…}
unix{…}
平台相關性處理
win32 {
SOURCES += hello_win.cpp
}
LANGUAGE
程式設計語言
LANGUAGE = C++
exists
!exists
!exists:如果一個檔案不存在,停止qmake
!exists( main.cpp ) {
error( "No main.cpp file found")
LIBS
LIBS += -L folderPath //引入的lib檔案的路徑-L:引入路徑
LIBS += -lLibName //引入lib 檔案-l : 引入庫
LIBS += -L"$(OutDir)" \
-L"$(SolutionDir)lib" \
-lopengl32 \
-lglu32 \
-lObjectDbAPI \
-lGraphicsLibD
如下為一個典型的pro檔案:
TEMPLATE = app //子產品設定,生成應用程式
TARGET = pm //指定為pm的目标檔案
CONFIG += qt warn_on //配置資訊,應用程式是一個Qt應用程式,編譯器會輸出盡可能多的警告資訊
win32:CONFIG += debug_and_release //???
QT += gui //加入gui庫
QT += core //加入QT的核心庫
QT += xml //加入xml庫
QT += network //加入network庫
QT += sql //加入sql庫
INCLUDEPATH += ./include //頭檔案包含路徑
INCLUDEPATH += ../svglib/include
INCLUDEPATH += ../../include/algebra
INCLUDEPATH += ../../include/nas
INCLUDEPATH += ../../include/planning
INCLUDEPATH += ../../include/vstability
INCLUDEPATH += ../../src_qt/cimxml/include
win32{ //win32平台相關
CONFIG(debug, debug|release) : LIBS += -L../../../lib -lsvglibd -lalgebrad -lnasd -lplanningd -lvstabilityd -lsvglibd -lcimxmld
CONFIG(release, debug|release) : LIBS += -L../../../lib -lsvglib -lalgebra -lnas -lplanning -lvstability -lsvglib -lcimxml
DESTDIR = ../../../bin
} else {
LIBS += -L../../../release/lib -lsvglib -lsvglib -lalgebra -lnas -lplanning -lvstability -lsvglib -lcimxml
DESTDIR = ../../../release/bin
OBJECTS_DIR = ../../../TEMP/pm //指定目标檔案(.obj)的存放目錄
MOC_DIR = moc //指定moc指令将含Q_OBJECT的頭檔案轉換成呢個标準.h檔案的存放目錄
UI_DIR = ui //指定uic指令将.ui檔案轉化成ui_*.h檔案存放目錄
RCC_DIR = rcc //指定rcc指令将.qrc檔案轉換成qrc_*.h檔案的
#Header files
HEADERS += include/pm_managedialog.h //指定頭檔案
HEADERS += include/pm_table_base.h
#Source files //指定源檔案
SOURCES += source/pm_managedialog.cpp
SOURCES += source/pm_table_base.cpp
#Forms //工程中包含的.ui設計檔案
FORMS += ui/pm_managedialog.ui
FORMS += ui/pm_busbarsectiondialog.ui
#Resource file(s) //工程中包含的資源檔案
RESOURCES += pm.qrc
win32:RC_FILE = pm.rc
工程項目中如果頭檔案或者實作檔案或者UI檔案有變化,應修改對應的 HEADER、SOURCES、FORMS部分。
要從pro檔案生成VC工程檔案,需在d:\cimpower\src\src_qt4目錄下執行如下指令:qmake -t vcapp -o ./pm/pm.vcproj ./pm/pm.pro
可以調用vcprojeditor對VC工程檔案進行處理,運作vcprojeditor程式修改VC工程檔案,程式配置如下:
點選“批量修改”按鈕,完成後退出即可。