• 深入理解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
  1. 可以用-L指定目录,-l指定库的名称(无需后缀,.lib, .a,.so都适用),注意-l后面没有空格
  2. 可以直接通过绝对路径和相对路径指定库的完成path(需后缀, .lib, .a, .so都试用), 相对路径用$$PWD前缀,路径不允许有空格。
  3. 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文件相关推荐

  1. Qt 中pro文件换行注意的问题

    Qt 中pro文件换行必须用  \,直接按回车换行会导致程序不正确.如下: CONFIG(debug, debug|release) {OBJECTS_DIR += $$PWD/../debugDES ...

  2. Qt中pro文件如何从相对路径导入库

    Qt中pro文件如何从相对路径导入库 Qt工程中有lib.dll.a.so等文件需要导入时,有时需要指定路径.指定绝对路径换到其他机器编译时会不大方便.那么,如何在Qt pro文件中通过相对路径导入库 ...

  3. qt中.pro文件详细说明

    工程上需要使用QT框架进行项目开发,.pro文件里面的具体配置方式比较模糊.详细整理文件里各配置项的含义,并对其编写方法进行归纳总结. 目录 1.配置项说明 1.1.注释 # 1.2.添加/排除QT项 ...

  4. [qt creator]pro文件的设置

    1. 怎么使exe输出到指定目录 DESTDIR =$$PWD/../bin 2.QT中默认不选中Shadow build设置方法 3.test.pro文件常用的设置 TEMPLATE = app C ...

  5. 【QT】震惊,一个由于QT只有.pro文件引起的世界难题。本文解决QT只有.pro的问题以及在项目中添加文件时,发生了一个编码错误的问题。

    震惊,一个由于QT只有.pro文件引起的世界难题!! 新手必看,避雷!!!不要相信网上那些人,他们文章中看不中用,正所谓印证了网络上的一句话:一人创作,万人模仿啊.和某手某音差不多!!# 概述:问题的 ...

  6. Qt 工程 pro文件

    原文链接:https://www.cnblogs.com/Braveliu/p/5107550.html 工作中,感觉pro文件的有些内容真不太懂,现系统性的学习一下.于此备录,分享共勉. 为了更好的 ...

  7. 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 ...

  8. Qt工程pro文件的配置和头文件和库的添加

    Qt开发中,pro文件是对正工程所有源码.编译.资源.目录等的全方位配置的唯一方式,pro文件的编写非常重要,以下对几个重要项进行说明(win和linux,mac平台通用配置) 注释 以"# ...

  9. QT中PRO文件写法的详细介绍

    在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: 1. 注释 从"#"开始,到这一行结束. 2.模板变量告诉q ...

最新文章

  1. Science | 初步的SARS-CoV-2蛋白酶抑制剂在小鼠中显示功效
  2. 学python需要学数据库吗-学习Python爬虫前,你必须知道的一些工具!
  3. Python3 Urllib学习
  4. select poll 与epoll模型的总结
  5. 三合一剪弦器怎么用_三合一冲锋衣推荐选购攻略:
  6. 使用 Proteus 仿真 STM32
  7. 心疼吗?被指是“傻X” 罗永浩深夜怒怼网友
  8. android 模仿uc标签页,android模仿UC首页天气效果
  9. mcs51 串口通信 单片机发 pc收
  10. android studio for android learning (四) 兼容性问题
  11. java简历的专业技能,java程序员专业技能简历范文
  12. 图解深度学习-三种梯度下降法可视化(BGD,SGD,MBGD)
  13. JAVA实现List集合去重
  14. Kali Linux 自定义GDM3登录背景图片和LOGO
  15. 最新杭州地铁开通时间表
  16. 功放与喇叭的匹配原则
  17. 冯·诺依曼体系结构介绍
  18. 字节跳动蚂蚁金服百度SRE社招面经
  19. 北京法院京牌小客车司法处置数据统计(Pandas)
  20. selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类

热门文章

  1. linux下装sqlserver安装包,【sqlServer】CentOS7.x 上Microsoft SQL Server for Linux安装和配置...
  2. scanf()函数错误把输入缓存里的回车作为一次字符输入
  3. python argvparser_Python ArgumentParse的subparser用法说明
  4. 栈 php 验证格式,表单验证 - 《Biny - 高性能轻量级PHP框架》 - 书栈网 · BookStack...
  5. real time linux pdf,【整理】ubuntu real time Linux
  6. MySQL 学习三:来教你如何完全卸载掉本地“头大的” MySQL 数据库!
  7. Hadoop搭建集群中输入hdfs namenode -format格式化节点时,提示:hdfs: command not found 解决办法
  8. 十四、Python第十四课——文件和异常
  9. 2003正在锁定计算机,WIN2003 自动锁定怎么解决?
  10. Linux系统扩硬盘,Linux系统硬盘扩容