Qt的pro文件并不仅仅只是记录文件列表,还有很多的参数,这些参数可以实现一些自动化操作,减少很多工作量,最终生成makefile来编译程序。常见功能有多平台库分别导入,顺序编译多个依赖Project等等,以下做详细说明。
1、Additional arguments:
QtCreator的Project属性中,build step有一个Additional arguments属性,可以设置一个参数,这个参数仅使用这个Qt-Kit时生效,例如:myPlatform=x86.
然后在pro中就可以使用这个参数了,注意,pro文件中引用变量要使用两个$,这个与shell不同,例如
$$PWD
$$myPlatform
参数可以直接引用,也可以做判断。
if(equals($$myPlatform,x86)){
//x86 平台需要做的操作
}
2、常见参数
TARGET: 目标名称,例如myApp。
TEMPLATE: 项目模板,常见有lib(编译成library)、app(编译成程式)、subdirs(为主项目,包含子项目)等,示例:TEMPLATE=lib,subdirs示例如下:
TEMPLATE=subdirs
SUBDIRS += DeviceCtlSubDir/libDeviceCtl.pro \
DeviceCtlSubDir/DeviceCtl.pro \
DeviceCtlSubDir/DeviceCtl_Command.pro
CONFIG: 配置参数,可配置多个参数,所以使用+=,不要使用=。ordered参数与subdirs配合使用,表示按照排列顺序编译,默认带有app_bundle和qt这两个参数,所以不需要则可以-=,例如下面的表示使用console以及C++11特性(纯C++,不含qt组件),不使用qt以及app。在编译library时,还有两个参数shared(生成动态库)、shared_and_static build_all (同时生成动态库合静态库,没有单独的静态库)
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
INCLUDEPATH: 头文件目录,使用+=,例如:
INCLUDEPATH += $$PWD/lib/include
LIBS: 库文件,使用+=,如下:
LIBS += $$PWD/lib/lib
DESTDIR: 目标文件文件夹,例如app,lib等文件。
OBJECTS_DIR: obj文件文件夹
MOC_DIR: 生成moc文件所在文件夹
UI_DIR: ui文件生成所在文件夹
RCC_DIR: RCC文件生成所在文件夹
DESTDIR = $$myINSTALL_DIR/bin
OBJECTS_DIR = $$myINSTALL_DIR/obj
MOC_DIR = $$myINSTALL_DIR/moc
UI_DIR = $$myINSTALL_DIR/ui
RCC_DIR = $$myINSTALL_DIR/rcc
3、引用其它pro文件参数
include (../DentalPrintManager.pro),然后使用$$引用即可。
4、执行shell命令
在run qmake时执行,调用system(shell command命令)。
system(mkdir -p $$BasicStructureLibOutputIncPath)
5、输出信息
使用message()输出消息,例如:message("BasicStructure $$myPlatform Build!")
6、Qt参数
Qt自身组件,例如gui、network等,以下示例:
QT += core network
QT -= gui
7、其它参数
SOURCES、HEADERS、FORMS、RESOURCES表示项目中添加的一些文件 |