-
深入理解Qt的pro文件
- 模板变量
- 生成目录
- 生成的应用程序名
- 编译选项
- 目标文件目录
- 包含头文件
- 包含源文件
- 包含资源文件
- 附加头文件包含
- 链接库
- 预编译宏
- 平台相关性处理
- 指定来自ui文件位置
- 指定界面翻译文本列表
- 指定图标
深入理解Qt的.pro文件
一般Qt项目我们是使用Qt Creator自动生成的,如果是没有.pro的项目,可以使用qmake project来生成。
在一般的.pro里已经包含了几个基本的选项,如TEMPLATE,TARGET,INCLUDEPATH,HEADS,SOURCES等选项,下面我们细讲。
模板变量
TEMPLATE = app
- app 表示该工程建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用
- lib 表示该工程建立一个库的makefile
生成目录
指定生成的可执行程序的目录,可以绝对路径和相对路径。
DESTDIR += ../bin
生成的应用程序名
程序名即软件名称
TARGET = 3DAOI
编译选项
增添后者移除某个模块。
例如增添c++11和console模块的支持,Qt的各模块也在这里添加
CONFIG += console c++11 network
CONFIG -= qt
可以用空格分隔或者“\”来隔行。
如果是一些比较特殊的Qt模块需要使用用以下方式加载:
QT += qml quick
QT += quick quickcontrols2
目标文件目录
obj文件存放的目录,也就是.o文件的生成路径,可以绝对路径或者相对路径。
OBJECTS_DIR += ../tmp
补充:
- MOC_DIR 指定moc文件生成路径
- UI_DIR 指定ui文件生成路径
包含头文件
表示本项目中头文件。
HEADERS += \
libcurl/curl/\
libcurl/curl/
只要Qt Creator目录树中add进去了就会自动追加到.pro文件中。
包含源文件
表示本项目中的源文件
SOURCES += main.cpp\
json.cpp
只要Qt Creator目录树里add进去了就会自动追加到.pro文件中。
包含资源文件
表示本项目包含的资源文件。
RESOURCES += qrc/
qrc文件格式类似如下:
<RCC>
<qresource prefix="/">
<file>Chapter1/0_hello.qml</file>
<file>Chapter1/1_object_expression.qml</file>
</qresource>
</RCC>
只要Qt Creator目录树里add进去了就会自定追加,更改.pro文件会同步更新Qt Creator里的目录树,但不会影响硬盘上的自愿文件。
附加头文件包含
一般要编译链接第三方库时配置include目录。
例如:
INCLUDEPATH += ./boost/include\
src/thirdpart/include
INCLUDEPATH += D:/boost/include\
E:/cocos2dx/include
注意:
- 可以用绝对路径或相对路径
- 相对路径中./可以省略
- 路径中不允许出现空格
链接库
对于静态库(.a)以及动态库(.so)。
LIBS += -LD:/codetest/libcurlcpp/libcurl/lib/-llibcurl\
-LD:/codetest/libcurlcpp/libcurl/lib/-lws2_32\
-LD:/codetest/libcurlcpp/libcurl/lib/-lwldap32\
-LD:/codetest/libcurlcpp/libcurl/lib/-lopencv.so\
-LD:/codetest/libcurlcpp/libcurl/lib/-llibzmq.a
或者:
LIBS += D:/codetest/libcurlcpp/libcurl/lib/libcurl.lib\
D:/codetest/libcurlcpp/libcurl/lib/ws2_32.lib\
D:/codetest/libcurlcpp/libcurl/lib/wldap32.lib
D:/codetest/libcurlcpp/libcurl/lib/opencv.so\
D:/codetest/libcurlcpp/libcurl/lib/opencv.a
再或者:
LIBS += $$PWD/libcurl/lib/libcurl.lib\
$$PWD/libcurl/lib/ws2_32.lib\
$$PWD/libcurl/lib/wldap32.lib
- 可以用-L指定目录,-l指定库的名称(无需后缀,.lib, .a,.so都适用),注意-l后面没有空格
- 可以直接通过绝对路径和相对路径指定库的完成path(需后缀, .lib, .a, .so都试用), 相对路径用$$PWD前缀,路径不允许有空格。
- LIBS += somepath这个可以写多行,也可以使用”\”隔行
注意:
对于动态库dll文件,必须拷贝到exe执行目录或者在环境变量里配置路径才可以。
预编译宏
DEFINES += USE_OPENSSL\
CURL_STATICLIB
类似于vs里面在工程里设置预编译选项 ,这个使用时自行google。
平台相关性处理
根据qmake所运行的平台来使用相应的作用域来进行处理。
win32
{
SOURCES += 1.cpp
}else{
SOURCES += 2.cpp
}
根据平台进行条件编译。
指定来自ui文件位置
这个我们不需要。
unix:UI_DIR = ../project/ui
win32:UI_DIR = D:/project/ui
指定界面翻译文本列表
翻译用户界面时需要用到。
TRANSLATIONS += Resource/myapp_zh.ts \
Resource/myapp_en.ts
指定图标
如果RC_FILE 和RES_FILE变量都没有设置这才可利用
RC_ICONS =