PRO文件详解

Qt中的Pro文件一般是不能直接用Make或Nmake编译的,因此对用的工具是qmake,可以生产makefile文件,之后再进行make操作。而makefile文件就是通过Pro文件生成的。
一、 文件的结构和组成
1. 注释:从“#”开始,一般占一行
2. 模板:告诉qmke所要生成的makefile文件类型,主要为以下几种:
a) app -建立一个应用程序的makefile。此为默认值。
b) lib- 建立一个库的makefile。
c) vcapp – 建立一个应用程序的VisualStudio项目文件。
d) vclib –建立一个库的VisualStudio项目文件。
e) subdirs – 此模板特殊,可以创建一个能够进入特定目录并且为一个项目生成makefile文件。
3. 制定生成应用程序的放置的文件目录。
DESTDIR += ../bin
4. 制定生成的应用程序的名称
TARGET = GeoVisAPP
5. 配置信息。CONFIG用来告诉qmake关于应用程序的配置信息。
CONFIG += qt warn_on release
a) qt 告诉qmake这个应用程序是使用Qt来连编的。也就是说qmake在连接和为编译添加所需的包含路径的时候会考虑到Qt库的。
b) warn_on 告诉qmake把编译器设置为输出警告信息。
c) release 告诉qmake应用程序必须被连编程一个为发布的应用程序。
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
17. LIBS += -L folderPath //引入的lib文件的路径 -L:引入路径
LIBS += -L$$PWD/bin/ -lGeoVisSDK
18. Release:LIBS += -L folderPath // release 版引入的lib文件路径
19. Debug:LIBS += -L folderPath // Debug 版引入的lib 文件路径
20. DEFINES += XX_XX_XXX //定义编译选项,在.h文件中就可以使用:#ifdefine xx_xx_xxx
21. RC_FILE = xxx.ico
IDI_ICON1 ICON DISCARDABLE "logoicon.ico" //logo.rc文件
RC_FILE = logo.rc
22. 平台相关性处理
在这里需要做的是根据qmake所运行的平台来使用相应的作用域来进行处理。为Windows平台添加的依赖平台的文件的简单的作用域看起来就像这样:
Win32{SOURCE += gxPlugin.cpp}
二、 MakeFile文件
MakeFile文件生成: qmake –o Makefile app.pro
Vs用户,qmake可以生产“dsp”文件: qmake –tvcapp –o app.dsp app.pro
三、 pro文件示例
TEMPLATE = app #配置生成应用程序
QT += qml quick widgets sql xml #加载Qt库
CONFIG += qt warn_on debug release
SOURCES += main.cpp \
plugininfo.cpp \
pluginmanager.cpp \
pluginmserialize.cpp
INCLUDEPATH += .
RESOURCES += qml.qrc #资源文件
#图像文件
IMAGES = images/substation.png \
images/communication.png \
images/autocom.png \
QML_IMPORT_PATH =
#引入的lib文件,用于引入动态链接库
LIBS += qaxcontainer.lib
# Default rules for deployment.
include(deployment.pri)
HEADERS += \
plugininfo.h \
pluginmanager.h \
pluginmserialize.h
RC_FILE = logo.rc
BINLIB = ../../bin ../../xercesc/lib
UI_HEADERS_DIR = ../inc # .ui文件转会为**.h 存放的目录
UI_SOURCES_DIR = ../src # .ui文件转会为**.cpp存放的目录
QMAKE_LIBDIR = $${BINLIB}
release {
TARGET = scdtool #指定生成的应用程序名
OBJECTS_DIR = ../../obj/scdtool/release #指定目标文件(obj)的存放目录
}
debug {
TARGET = scdtool_d #指定生成的应用程序名
OBJECTS_DIR = ../../obj/scdtool/debug #指定目标文件(obj)的存放目录
}
MOC_DIR = $${OBJECTS_DIR}
DESTDIR = ../../bin #指定生成的应用程序放置的目录
四、 标志说明
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选项生效。
TARGET变量指定生成的二进制代码的路径和文件名,如果建立的是一个链接库的话,它会在文件名前面自动加上"lib"和在最后自动加上".so".
我们在使用过程中可能会使用到另外的一些函数库,链接库等。函数库的头文件指定使用INCLUDEPATH变量,其它链接库的指定可以通过LIBS 变量来指定,例LIBS += -lmath -L/usr/local/lib
DEFINES变量的指定就如同make的-D选项一样。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值