注释

以”#”开始的行,直到结束

模板变量

告诉qmake生成哪种makefile

TEMPLATE = app

其中

  • app - 表示该工程建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用
  • lib - 表示该工程建立一个库的makefile
  • subdir - 生成针对子目录的Makefile,子目录由变量SUBDIRS指定;
  • vcapp - 生成用于VS开发环境的软件工程(只用于windows系统);
  • vclib - 生成用于VS开发环境的库工程(只用于windows系统);

生成目录

指定生成的可执行程序的目录,可以绝对和相对路径

DESTDIR += ../bin

生成的应用程序名

软件名

TARGET = qtest

编译选项

增添或者移除某个模块、指定编译器所要使用的选项,其可用选项如下:

  • 下面这些选项控制着使用哪些编译器标志:
  • 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选项生效。

增添C++11和console支持,Qt的各模块

CONFIG += console c++11 network
CONFIG -= qt

可以用空格分隔或者”\”来隔行。

目标文件目录

obj文件存放的目录,可以绝对或相对路径

OBJECTS_DIR += ../tmp

工程中包含的头文件

表示本工程中的头文件

HEADERS += \
libcurl/curl/curl.h \
libcurl/curl/curlbuild.h \
libcurl/curl/curlrules.h \

只要qtcreator目录树里add进去了就自动添加

工程中包含的源文件

表示本工程中的源文件

SOURCES += mytest.cpp\
main.cpp

只要qtcreator目录树里add进去了就自动添加

工程中包含的.ui设计文件

FORMS += forms/painter.ui

工程中包含的资源文件

表示本工程包含的资源文件

RESOURCES += qrc/painter.qrc

只要qtcreator目录树里add进去了就自动添加,更改pro文件会同步更新qtcreator里的目录树,但不会影响硬盘上的资源文件

附加头文件包含目录

一般要编译链接第三方库时配置include目录

例如

INCLUDEPATH += ./boost/include\
src/thirdpart/include INCLUDEPATH += D:/boost/include\
E:/cocos2dx/include
  • 可以用绝对或相对路径
  • 相对路径中./可以省略
  • 路径中不允许出现空格

链接库

对于静态库(.lib, .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\
-LD:/codetest/libcurlcpp/libcurl/lib/ -lzmq

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

再或者


LIBS += $$PWD/libcurl/lib/libcurl.lib\
$$PWD/libcurl/lib/ws2_32.lib\
$$PWD/libcurl/lib/wldap32.lib
  • 可以用-L指定目录,-l指定库的名称(无需后缀,.lib,.a, .so都适用)
  • 可以直接通过绝对路径和相对路径指定库的完整path(需后缀,.lib,.a, .so都适用),相对路径用$$pwd前缀,路径不允许空格
  • LIBS += somepath 这个可以多行写,也可以用“\”隔行
  • 最后一种只适用于windows静态库
  • 对于linux链接库, 比如opencv项目用make编译出的libopencv.a或者libopencv.so,链接的时候必须写 -lopencv ,写项目的名字而不是库的文件名字
  • 对于动态库dll,必须拷贝到exe执行目录或者在环境变量里配置路径

预编译宏

DEFINES += USE_OPENSSL\
CURL_STATICLIB

类似于vs里面在工程里设置预编译选项

平台相关性处理

根据qmake所运行的平台来使用相应的作用域来进行处理

win32
{
SOURCES += 1.cpp
}
else
{
SOURCES += 2.cpp
}

根据平台进行条件编译

只适用于Windows编译的一些变量

DEF_FILE - 应用程序所要连接的.def文件。

RC_FILE - 应用程序的资源文件。

RES_FILE - 应用程序所要连接的资源文件。

源文件编码方式

CODECFORSRC = GBK

随手记

qt pro 里面变量的引用

  • VAR = foobar =>当运行qmake时,赋值给变量
  • $$VAR =>在运行qmake时,QMake变量的值
  • $${VAR} =>在运行qmake的时候QMake变量的值(相同但是被封闭以与周围文本分开)
  • $(VAR) =>运行Makefile(而不是qmake)时的环境变量的内容
  • $$(VAR) =>运行qmake(不是Makefile)时的环境变量的内容

参考资料

[1] Qt工程pro文件的简单配置(尤其是第三方头文件和库)

[2] QT工程pro文件变量说明

[3] QT的pro文件编写,高效简洁,,路径设置 有空格 引入系统环境变量等

[4] QT中PRO文件写法的详细介绍,很有用,很重要!

[5] QT中PRO文件写法的详细介绍

【整理】QT .pro文件中的变量说明的更多相关文章

  1. QT .pro文件中的变量说明

      https://blog.csdn.net/tanou3212/article/details/79942840 TEMPLATE:定义了工程的编译模式 赋值方式为:TEMPLATE=app (1 ...

  2. 关于QT中.pro文件中的相对路径

    被.pro文件中的相对路径给整糊涂了,仔细研究后,原来.pro文件中有两种相对路径. 一种情况下./表示.pro文件所在的目录 另一种情况下./表示构建生成目录 INCLUDEPATH SOURCE ...

  3. 在64位的ubuntu 14.04 上开展32位Qt 程序开发环境配置(pro文件中增加 QMAKE_CXXFLAGS += -m32 命令)

    为了能中一个系统上开发64或32位C++程序,费了些周折,现在终于能够开始干过了.在此记录此时针对Q5.4版本的32位开发环境配置过程. 1. 下载Qt 5.4 的32位版本,进行安装,安装过程中会发 ...

  4. qt,pro文件中用于平台区分的写法

    qt,pro文件中用于平台区分的写法 切记: 大括号和平台需要在同一行中,否则会失效 unix { TARGET = appname } macx { TARGET = appname2 } win3 ...

  5. Qt .pro文件 详解

    1. TEMPLATE变量TEMPLATE描述了为建立目标文件而采用何种模板,即生成何种形式的Makefile文件.Qmake工具定义了5种模板:1. 应用程序App,为建立一个Qt应用程序创建Mak ...

  6. Qt Pro文件与Qt模块启用

    看qt论坛中经常有人忘记 QT+=network 等语句.随便写写吧,或许对他人有帮助. 一.从哪开始呢 不妨先看个例子吧: #include <QtCore/QCoreApplication& ...

  7. QT .pro文件 LIBS用法详解

    在程序中需要使用到团队其它成员开发的静态库和动态库,起初是知道使用LIBS变量在在.pro文件中指定需要包含的库,但是实际使用的时候却遇到很大麻烦,但其实确实是因为自己看官方文档不太用心造成的. 下面 ...

  8. 如何在Qt资源文件中包含和释放exe等各种类型文件?

    操作系统:Windows 10 X64 企业版 Qt: 5.8.0 QtCreater: 4.2.1 刚刚开始学习Qt,不断遇到困难和挑战,前几天在各个QQ群里询问如何在Qt的资源文件中包含和释放ex ...

  9. Qt pro文件语法

    在Qt下做开发的时候.pro文件就是工程的配置文件,虽然很多时候里面的选项是工具自动生成的,但是难免会需要手动修改的时候,下面就记录一下它的基本语法 #:在.pro文件中表示注释,注释当前行 TEMP ...

随机推荐

  1. Uniprot数据库

    Uniprot数据库是Universal Protein的英文缩写,是信息最丰富.资源最广的蛋白质数据库. UniprotKB由两部分组成: UniProtKB/Swiss-Prot 高质量的.手工注 ...

  2. 兼容ie8的前端下载方法

    背景:在xp系统上 ie8浏览器的下载需求,后端返回资源路径. 方法:谷歌下采用aDown下载,ie采用window.open 触发下载,如果不能自动自动下载,采用execCommand(" ...

  3. react项目中页面跳转、刷新及获取网络状态

    // 页面跳转 window.location.href = 'http://speedtest.wangxiaotong.com/' // 页面刷新 window.location.reload() ...

  4. 如何查看linux服务器内存使用情况

    1. free命令 free 命令显示系统使用和空闲的内存情况,包括物理内存.交互区内存(swap)和内核缓冲区内存. 直接输入free命令,显示如下   free命令默认是显示单位kb,可以采用fr ...

  5. JSON的新方法--parse()和stringify()

    // eval 可以解析任何字符串变成js var str = 'function show() {console.log(1)}'; eval(str); show(); // parse 只能解析 ...

  6. springcloud-zuul路由网关

    路由网关(zuul) 在微服务架构中,需要多个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能 路由.配置管理等,由这个基础组件相互协作,共同组建了一个简单的微服务系统.一个简 ...

  7. Hive中数据的导入与导出

    最近在做一个小任务,将一个CDH平台中Hive的部分数据同步到另一个平台中.毕竟我也刚开始工作,在正式开始做之前,首先进行了一段时间的练习,下面的内容就是练习时写的文档中的内容.如果哪里有错误或者疏漏 ...

  8. git相关操作记录

    拉取远端并强制覆盖本地文件 有时候会出现想放弃本地修改的情况,那么只需要下面几行命令 git fetch --all git reset --hard origin/master git pull / ...

  9. vue-cli脚手架build目录中的webpack.prod.conf.js配置文件

    // 下面是引入nodejs的路径模块 var path = require('path') // 下面是utils工具配置文件,主要用来处理css类文件的loader var utils = req ...

  10. Assignments 1

    跑了一下之前写的UiPath Assignments脚本,没什么问题,发上来供大家参考. 先看结果: github:https://github.com/WendyZheng1022/RPA 有时间我 ...