深入理解Qt的.pro文件
- 深入理解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/curl.h\
libcurl/curl/curlbuild.h
只要Qt Creator目录树中add进去了就会自动追加到.pro文件中。
包含源文件
表示本项目中的源文件
SOURCES += main.cpp\
json.cpp
只要Qt Creator目录树里add进去了就会自动追加到.pro文件中。
包含资源文件
表示本项目包含的资源文件。
RESOURCES += qrc/painter.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/includeINCLUDEPATH += 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 = logo.ico
深入理解Qt的.pro文件相关推荐
- Qt 中pro文件换行注意的问题
Qt 中pro文件换行必须用 \,直接按回车换行会导致程序不正确.如下: CONFIG(debug, debug|release) {OBJECTS_DIR += $$PWD/../debugDES ...
- Qt中pro文件如何从相对路径导入库
Qt中pro文件如何从相对路径导入库 Qt工程中有lib.dll.a.so等文件需要导入时,有时需要指定路径.指定绝对路径换到其他机器编译时会不大方便.那么,如何在Qt pro文件中通过相对路径导入库 ...
- qt中.pro文件详细说明
工程上需要使用QT框架进行项目开发,.pro文件里面的具体配置方式比较模糊.详细整理文件里各配置项的含义,并对其编写方法进行归纳总结. 目录 1.配置项说明 1.1.注释 # 1.2.添加/排除QT项 ...
- [qt creator]pro文件的设置
1. 怎么使exe输出到指定目录 DESTDIR =$$PWD/../bin 2.QT中默认不选中Shadow build设置方法 3.test.pro文件常用的设置 TEMPLATE = app C ...
- 【QT】震惊,一个由于QT只有.pro文件引起的世界难题。本文解决QT只有.pro的问题以及在项目中添加文件时,发生了一个编码错误的问题。
震惊,一个由于QT只有.pro文件引起的世界难题!! 新手必看,避雷!!!不要相信网上那些人,他们文章中看不中用,正所谓印证了网络上的一句话:一人创作,万人模仿啊.和某手某音差不多!!# 概述:问题的 ...
- Qt 工程 pro文件
原文链接:https://www.cnblogs.com/Braveliu/p/5107550.html 工作中,感觉pro文件的有些内容真不太懂,现系统性的学习一下.于此备录,分享共勉. 为了更好的 ...
- Qt工程pro文件配置详解
文章目录 1 pro文件常用配置 1.1 注释 1.2 CONFIG 1.3 DEFINES 1.4 FORMS 1.5 HEADERS 1.6 INCLUDEPATH 1.7 LIBS 1.8 QT ...
- Qt工程pro文件的配置和头文件和库的添加
Qt开发中,pro文件是对正工程所有源码.编译.资源.目录等的全方位配置的唯一方式,pro文件的编写非常重要,以下对几个重要项进行说明(win和linux,mac平台通用配置) 注释 以"# ...
- QT中PRO文件写法的详细介绍
在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: 1. 注释 从"#"开始,到这一行结束. 2.模板变量告诉q ...
最新文章
- Science | 初步的SARS-CoV-2蛋白酶抑制剂在小鼠中显示功效
- 学python需要学数据库吗-学习Python爬虫前,你必须知道的一些工具!
- Python3 Urllib学习
- select poll 与epoll模型的总结
- 三合一剪弦器怎么用_三合一冲锋衣推荐选购攻略:
- 使用 Proteus 仿真 STM32
- 心疼吗?被指是“傻X” 罗永浩深夜怒怼网友
- android 模仿uc标签页,android模仿UC首页天气效果
- mcs51 串口通信 单片机发 pc收
- android studio for android learning (四) 兼容性问题
- java简历的专业技能,java程序员专业技能简历范文
- 图解深度学习-三种梯度下降法可视化(BGD,SGD,MBGD)
- JAVA实现List集合去重
- Kali Linux 自定义GDM3登录背景图片和LOGO
- 最新杭州地铁开通时间表
- 功放与喇叭的匹配原则
- 冯·诺依曼体系结构介绍
- 字节跳动蚂蚁金服百度SRE社招面经
- 北京法院京牌小客车司法处置数据统计(Pandas)
- selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类
热门文章
- linux下装sqlserver安装包,【sqlServer】CentOS7.x 上Microsoft SQL Server for Linux安装和配置...
- scanf()函数错误把输入缓存里的回车作为一次字符输入
- python argvparser_Python ArgumentParse的subparser用法说明
- 栈 php 验证格式,表单验证 - 《Biny - 高性能轻量级PHP框架》 - 书栈网 · BookStack...
- real time linux pdf,【整理】ubuntu real time Linux
- MySQL 学习三:来教你如何完全卸载掉本地“头大的” MySQL 数据库!
- Hadoop搭建集群中输入hdfs namenode -format格式化节点时,提示:hdfs: command not found 解决办法
- 十四、Python第十四课——文件和异常
- 2003正在锁定计算机,WIN2003 自动锁定怎么解决?
- Linux系统扩硬盘,Linux系统硬盘扩容