工程上需要使用QT框架进行项目开发,.pro文件里面的具体配置方式比较模糊。详细整理文件里各配置项的含义,并对其编写方法进行归纳总结。

目录

1、配置项说明

1.1、注释 #

1.2、添加/排除QT项目模块 QT +=  / QT -=

1.3、模板 TEMPLATE

1.4、指定目标文件名 TARGET

1.5、配置应用程序信息 CONFIG

1.6、指定源文件 SOURCES

1.7、指定头文件 HEADERS

1.8、指定引入的lib文件 LIBS

1.9、指定工程头文件 INCLUDEPATH

1.10、其他

2、条件编译

2.1、平台相关性处理

2.2、如果一个文件不存在,停止qmake

2.3、检查多于一个的条件

3、makefile与.pro转换

3.1、生成Makefile

3.2、生成.pro

4、.pro文件特殊路径

4.1、当前文件路径 PWD

4.2、路径中含空格 $$quote

5、.pro文件配置实例


1、配置项说明

1.1、注释 #

从#开始,到这一行的结束。

1.2、添加/排除QT项目模块 QT +=  / QT -=

QT += 配置项:添加QT项目需要的模块;

QT -= 配置项:排除某个模块。

1.3、模板 TEMPLATE

TEMPLATE = 模板变量。告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:

app:建立一个应用程序的makefile,这个是默认值,若模块项未指定,将默认使用此项;

lib:建立一个库的makefile;

vcapp:建立一个应用程序的VisualStudio项目文件;

vclib:建立一个库的VisualStudio项目文件;

subdirs:这是一个特殊的模板,可以创建一个可进入特定目录并为一个项目文件生成makefile,此makfile可以调用make。

1.4、指定目标文件名 TARGET

TARGET = 程序名称。指定最后生成的目标应用程序的名称,如果不设置该项目,目标名会被自动设置为跟项目文件一样的名称。

TARGET = filename 

1.5、配置应用程序信息 CONFIG

CONFIG += : 告诉qmake关于应用程序的配置信息,使用+=表示在现有的配置上添加,这样会更安全。比如,CONFIG += qt warn_on release 其具体的意义为:

qt :告诉qmake此程序是使用qt来连编的。即qmake在连接、为编译添加所需包含路径时会考虑qt的库;

warn_on :告诉qmake要将编译器设置为输出警告信息形式;

release :告诉qmake应用程序必须被连编为一个可发布的应用程序。开发过程中,也可以使用debug;

1.6、指定源文件 SOURCES

SOURCES += : 指定工程中包含的源文件。

正则表达式表示:

SOURCES = *.cpp 

多个源文件:

对于多源文件,可用空格分开,如:SOURCES = 1.cpp 2.cpp3.cpp或者每一个文件可以被列在一个分开的行里面,通过反斜线另起一行,就像这样:

SOURCES = hello.cpp   \main.cpp 

+=冗长写法:

一个更冗长的方法是单独地列出每一个文件,就像这样:

SOURCES+= hello.cpp
SOURCES +=main.cpp 

这种方法中使用“+=”比“=”更安全,因为它只是向已有的列表中添加新的文件,而不是替换整个列表。

1.7、指定头文件 HEADERS

HEADERS += : 指定工程中所包含的头文件。

写法与源文件写法一致。

1.8、指定引入的lib文件 LIBS

LIBS += : 指定引入的lib文件(.lib或.so)的路径。通常用Unix风格,大写的L表示“路径”,小写的l表示“库文件名字”。根据不同的版本可以分为两种形式:

unix:Release: LIBS += -L folder Path //release版本引入的lib文件Debug: LIBS += -L folder Path //debug版本引入的lib文件uwin32:Release: LIBS += folder Path //release版本引入的lib文件Debug: LIBS += folder Path //debug版本引入的lib文件

1.9、指定工程头文件 INCLUDEPATH

INCLUDEPATH += : 指定工程所需要的头文件。

列出工程中 #include 项需要搜索的路径,即头文件的路径。多个路径用空格隔开。如果路径本身包含空格,则需要用双引号引起来。

INCLUDEPATH = c:/msdev/include d:/stl/include win32:INCLUDEPATH += "C:/mylibs/extra headers"

1.10、其他

$$: 取变量的值。

UIC_DIR += : 指定uic命令,将.ui文件转化为ui_*.h文件存放的目录。

RCC_DIR += : 指定rcc命令,将.qrc文件转换成qrc_*.h文件存放的目录。

MOC_DIR += : 指定moc命令,将含有Q_OBJECT的头文件转换成标准.h文件存放的目录。

OBJECTS_DIR += : 指定目标文件obj的存放目录。

CODECFORSRC += : 指定源文件的编码格式。

RESOURCES += : 指定工程中所包含的资源文件。

DESTDIR += :用来指定目标的生成路径。

INTERFACES += :添加界面文件(ui)。

QT += : 指定工程中使用的Qt的模块。默认情况下会使用Qt 的core和gui模块。如:QT += core gui。

        DEFINES += : 用来定义编译选项。

qmake添加该字段指定的全局宏定义。VS中也有类似的全局宏定义,在.dll工程中经常用到,来指定是 dllexport 还是 dllimport 。

DEFINES += FUNDLL_LIBRARY

在头文件中使用上述宏定义:

#if defined(FUNDLL_LIBRARY)
#  define FUNDLLSHARED_EXPORT __declspec(dllexport)
#else
#  define FUNDLLSHARED_EXPORT __declspec(dllimport)
#endif

        FORMS += : 指定工程中的ui文件。

列出工程中使用的UI文件(xml格式),这些文件会在编译之前被 uic(User Interface Compile,UI编译器) 处理。构建UI文件是所需的依赖项、头文件、源文件等都会自动被添加到工程中。

UIC会把 .ui(xml格式)文件转换成C++的 .h 文件(通常叫Ui_dialog.h)。其实是在.h文件里定义一个类,里面包含了UI文件中的所以元素/对象。

FORMS = mydialog.ui \mywidget.ui \myconfig.ui

        DEPENDPATH += : 指定工程的依赖路径。

列出依赖项所在的路径。当处理included文件时会使用该项。感觉它就是INCLUDEPATH.

INCLUDEPATH += $$PWD/../mydll
DEPENDPATH += $$PWD/../mydll

2、条件编译

2.1、平台相关性处理

我们在这里需要做的是根据qmake所运行的平台来使用相应的作用域来进行处理。为Windows平台添加的依赖平台的文件的简单的作用域看起来就像这样:

win32 {  SOURCES += hello_win.cpp
} unix{
}

所以如果qmake运行在Windows上的时候,它就会把hello_win.cpp添加到源文件列表中。如果qmake运行在其它平台上的时候,它会很简单地把这部分忽略。

2.2、如果一个文件不存在,停止qmake

如果某一个文件不存在的时候,你也许不想生成一个Makefile。我们可以通过使用exists()函数来检查一个文件是否存在。我们可以通过使用error()函数把正在运行的qmake停下来。这和作用域的工作方式一样。只要很简单地用这个函数来替换作用域条件。对main.cpp文件的检查就像这样:

!exists( main.cpp ) {  error( "No main.cpp file found")
} 

“!”用来否定这个测试,比如,如果文件存在,exists( main.cpp)是真,如果文件不存在,!exists( main.cpp )是真。

2.3、检查多于一个的条件

假设你使用Windows并且当你在命令行运行你的应用程序的时候你想能够看到qDebug()语句。除非你在连编你的程序的时候使用console设置,你不会看到输出。我们可以很容易地把console添加到CONFIG行中,这样在Windows下,Makefile就会有这个设置。但是如果告诉你我们只是想在当我们的应用程序运行在Windows下并且当debug已经在CONFIG行中的时候,添加console。这需要两个嵌套的作用域;只要生成一个作用域,然后在它里面再生成另一个。把设置放在最里面的作用域里,就像这样:

win32 {  debug {  CONFIG += console  }
} 

嵌套的作用域可以使用冒号连接起来,像这样:

win32:debug {  CONFIG += console
} 

3、makefile与.pro转换

3.1、生成Makefile

当你已经创建好你的项目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的项目文件那里然后输入:

Makefile可以像这样由“.pro”文件生成:

qmake -oMakefile hello.pro 

对于VisualStudio的用户,qmake也可以生成“.dsp”文件,例如:

qmake -tvcapp -o hello.dsp hello.pro 

附加:

.pro 文件预定义宏设置:

CONFIG(release, debug|release) {  DEFINES += MYRELEASE
}
else {  DEFINES += MYDEBUG
} 

3.2、生成.pro

cd到源码目录的CMakeLists.txt文件夹下。使用命令:

qmake -project 

会生成一个*.pro文件,可以直接使用QT打开,一般情况下比使用QT直接打开cmakelist载入的信息全面。自己补充一部分就可以了。

4、.pro文件特殊路径

4.1、当前文件路径 PWD

PWD表示当前.pro文件所在的路径。如:

INCLUDEPATH += $$PWD/../mydll

4.2、路径中含空格 $$quote

quote处理带空格的路径。如:

INCLUDEPATH += $$quote(C:/Program Files (x86)/Windows Kits/8.1/Include/um)

5、.pro文件配置实例

 //添加QT依赖的库
QT += gui
QT += core xml: QT += widgets//添加c11配置支持
CONFIG += c++11//输出文件的名称
TARGET = YouAppName//配置控制台输出
CONFIG += console//输出类型application
TEMPLATE = app//源文件
SOURCES += main.cpp \appconfig.cpp//头文件
HEADERS += \appconfig.h \opendoorthread.h//配置debug和release
CONFIG +=debug_and_release
CONFIG(debug,debug|release){
DESTDIR += $$PWD/debug
LIBS += -L$$PWD/debug/ -lThorModel
}else{
}//需要的头文件
INCLUDEPATH += $$PWD/AllDLL/include
INCLUDEPATH += $$PWD/debug/3rdparty/opencv-2.4.10/include \$$PWD/debug/3rdparty/opencv-2.4.10/include/opencv \$$PWD/debug/3rdparty/opencv-2.4.10/include/opencv2
//ui
FORMS += \TestProject/testform.ui

qmake非常方便、快捷,是一个轻量级的makefile生成工具,在使用该指令前要正确地编写.pro文件。

参考文档:

1、Qt开发中如何正确的编写.pro文件及详细说明 - 知乎

2、详解 QT 中.pro文件的写法-51CTO.COM

3、https://www.jianshu.com/p/682b9ab004c9

4、QT pro文件详细写法+实例 - 王会喜 - 博客园

传送门:deepstream系列文章分类整理

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

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

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

  5. QT中PRO文件写法

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

  6. Qt中 .pro 文件和 .pri 文件介绍

    *.pro 这是一个典型的Qt示例程序的.pro文件(propriprfprl.pro): TEMPLATE = app CONFIG += QT QT += core guiTARGET = pro ...

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

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

  8. Qt中pro、pri文件的语法介绍

    在Qt当中pro文件则是统筹整个项目的重要文件,而pri文件则是类似于C.C++中的头文件,反正就是我们可以把.pro文件内的一部分单独放到一个.pri文件内,然后包含进来,可以供给其他工程使用,现在 ...

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

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

最新文章

  1. 随手记:IDAPro蛮强大
  2. loadrunner脚本中参数有中文时报错
  3. sklearn自学指南(part10)--Lasso及多任务Lasso
  4. SQLServer数据库(二)
  5. 跨域资源共享CORS详解
  6. 基于.net standard 的动态编译实现
  7. 重磅 | 第八届世界华人数学家大会将在清华大学举行
  8. 深度学习Dubbo系列(入门开篇)
  9. eclipse及myeclipse改变编码
  10. 机器视觉烟包行业质量检测解决方案
  11. 192.168.8.1手机登陆_192.168.1.1手机登陆
  12. 〔转〕Word域的应用和详解2_等式和公式域
  13. 毕业设计记录-增加瑞利衰落信道
  14. [工作记录]在线表格比对系统实现思路整理
  15. 高仿360云盘android端的ui实现,高仿360云盘android端的UI实现
  16. triplets 、triplet Loss和 hard triplets
  17. Chapter 2 Multi-armed Bandits 学习总结
  18. 数值分析:高斯消元法
  19. dlib安装失败解决办法
  20. prototype.js详解

热门文章

  1. 批量生成文件夹并命名,操作步骤
  2. 香港专业教育学院学会编写网络钓鱼电子邮件的9件事
  3. OpenCV Using Python——构造方向可控金字塔
  4. 【Chrome】Chrome浏览器怎么查看版本信息
  5. Box2D C++ 碰撞
  6. 使用Stream处理Map
  7. java通过POI和jacob实现word文档的在线预览和下载
  8. 【原创】jQuery插件 - Booklet翻书特效教程(一) 一般设置
  9. Learning to Segment Every Thing
  10. matlab取送货路径优化