文章目录
- 1、注释
- 2、QT+=
- 3、模板变量 TEMPLATE
- 4. TARGET =
- 5. CONFIG +=
- 6、控制输出目录
- 7. DEPENDPATH += :
- 8. INCLUDEPATH += :
- 9. CODECFORSRC += :
- 10、源代码文件目录
- 11、LIBS += :
- 12、DEFINES += :
- 13、变量PWD
- 14、变量OUT_PWD
- 15. 跨平台处理信息
- 16 pri文件
Qt之工程文件
https://blog.csdn.net/adriano119/article/details/5878169
https://www.yuque.com/youyouwoxin-adiw5/eae3th/xiqrgw
主要内容来自于网络和上面两篇链接,摘录是为了方便使用。
在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下:
1、注释
从“#”开始,到这一行结束。
2、QT+=
这是添加QT项目需要的模块的,若项目中要排除某个模块,也可用QT -= 配置项。
3、模板变量 TEMPLATE
这个配置项确定qmake为这个应用程序生成哪种makefile 。有下面五种形式可供选择:
1)app : 建立一个应用程序,这个是默认值,若模块项未指定,将默认使用此项;
2)lib : 建立一个库;比如:动态库、静态库文件
3)vcapp: 建立一个应用程序的VisualStudio项目文件;
4)vclib : 建立一个库的VisualStudio项目文件;
5)subdirs : 这是一个特殊的模板,可以创建一个工程集目录
subdirs 举例:
TEMPLATE = subdirs
SUBDIRS =\
raknet\
onetengine \
omisc \
testDebugShow
onetengine.depends = raknet omisc
testDebugShow.depends = omisc
#CONFIG += ordered
- TEMPLATE=subdirs 这是固定写法,声明是做工程集目录的
- SUBDIRS 是指明目录中有哪些项,可以嵌套另一个subdirs型的pro
- 接下来可以详细定义其中的项目,如 xxx.depends=yyy,表示左边的依赖=后面的项目
相关参数:
.subdir | 指定子项的目录,不使用子项本身的名字. |
---|---|
.file | 明确指定该子项使用的pro文件,默认是根据名字自动找的,该项不和.subdir同时使用 |
.condition | 指定要生成的子项目必须为true的bld.inf定义。仅在Symbian平台上可用。 |
.depends | 该子项依赖指定的子项,只在使用makefiles的平台有效 |
.makefile | 该子项的makefile,只在使用makefiles的平台有效 |
.target | 该子项的TARGET,只在使用makefiles的平台有效 |
- 使用 subdirs =a b c d声明的其实是4个子项的名字
- 默认不多做说明的话,qmake 根据名字自动去找子目录,启用子目录中的pro文件(名字优先匹配).
- 如果有特别说明,比如: a.subdir=./z 或者 a.file=./z/z.pro 就可以不受名字限制。
- 至于.makefile,应该是你混用第三方库的时候才有必要手动指定使用的makefile
- . target 可以在子pro中指定,除非你觉得这里比较统一方便修改
4. TARGET =
这个配置项用来指定最后生成的目标应用程序的名称。名字不做修饰(不加.a/.lib/.dll)的好处是让qt帮我们加,在不同平台不用我们考虑差别.
5. CONFIG +=
用来告诉qmake关于应用程序的配置信息,使用+=表示在现有的配置上添加,这样会更安全。比如,CONFIG += qt warn_on release 其具体的意义为:
qt :
告诉qmake此程序是使用qt来连编的。即qmake在连接、为编译添加所需包含路径时会考虑qt的库;warn_on :
告诉qmake要将编译器设置为输出警告信息形式;release :
告诉qmake应用程序必须被连编为一个可发布的应用程序。开发过程中,也可以使用debug
;
6、控制输出目录
6.1、UIC_DIR += :
用来指定uic命令,将.ui文件转化为ui_*.h文件存放的目录。
6.2、RCC_DIR += :
用来指定rcc命令,将.qrc文件转换成qrc_*.h文件存放的目录。
6.3、MOC_DIR += :
用来指定moc命令,将含有Q_OBJECT的头文件转换成标准.h文件存放的目录。
6.4、OBJECTS_DIR += :
用来指定目标文件obj的存放目录。
6.5、DESTDIR += :
用来指定目标的生成路径。
7. DEPENDPATH += :
列出依赖项所在的路径。当处理included文件时会使用该项。
8. INCLUDEPATH += :
列出工程中 #include 项需要搜索的路径,即头文件的路径。
多个路径用空格隔开。如果路径本身包含空格,则需要用双引号引起来。
9. CODECFORSRC += :
源文件编码方式
CODECFORSRC = GBK
10、源代码文件目录
10.1、FORMS += :
用来指定工程中的ui文件。
10.2、 HEADERS += :
用来指定工程中所包含的头文件。
10.3、SOURCES += :
用来指定工程中包含的源文件。
10.4、RESOURCES += :
用来指定工程中所包含的资源文件。
10.5、RC_FILE = xxx.icns
RC_FILE = myapp.rc
IDI_ICON1 ICON “myappico.ico” windows
或者 直接使用
RC_ICONS = myappico.ico windows
或者
ICON = myapp.icns mac
11、LIBS += :
指定工程里需要链接的库文件(.lib或.dll)。根据不同的版本可以分为两种形式:
Release: LIBS += -L folder Path
//release版本引入的
lib
文件
Debug: LIBS += -L folder Path
//debug版本引入的
lib
文件
通常用Unix风格,大写的L表示“路径”,小写的l表示“库文件名字”。如
unix:LIBS += -``**L**``/usr/local/lib -``**l**``math win32:LIBS += c:/mylibs/math.lib
12、DEFINES += :
qmake添加该字段指定的全局宏定义。VS中也有类似的全局宏定义,在.dll工程中经常用到,来指定是 dllexport 还是 dllimport .
-
屏蔽告警信息和调试输出
DEFINES += QT_NO_WARNING_OUTPUT\ QT_NO_DEBUG_OUTPUT
-
自定义宏
DEFINES += FUNDLL_LIBRARY
在头文件中使用上述宏定义:
#if defined(FUNDLL_LIBRARY) #define FUNDLLSHARED_EXPORT __declspec(dllexport) #else #define FUNDLLSHARED_EXPORT __declspec(dllimport) #endif
13、变量PWD
表示当前.pro文件所在的路径。
INCLUDEPATH += $$PWD/…/mydll
14、变量OUT_PWD
表示输出的“Makefile”所在的路径(通常在编译后生成的.exe文件的上层目录里)。
LIBS += -L$$OUT_PWD/…/funDll/ -lfunDll
15. 跨平台处理信息
跨平台处理信息也要写在.pro文件中, 其示例如下:
win32{
}
unix{
}
16 pri文件
使用pri文件可以进行工程模块化管理
- 新工程中,新建一个xxx.pri文件,在pro文件中,include这个pri文件,
include (xxx.pri)
// 使用像一个函数
pri文件并没有那么神秘,它完全可以被看作一个子 Pro 文件。就像头文件之间的包含关系一样,你可以将pri文件包含在Pro文件中,那么在Pro就可以运用到pri文件下内容了。只不过你不能在pri文件中包含Pro文件。