在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 += main.cpp
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工程文件,程序配置如下:
点击“批量修改”按钮,完成后退出即可。