Qt .pro文件的一些用法

i)       我学习Qt的第一本书籍是Mark Summerfield等编写的《C++ GUI Qt 4编程(第2版)》,但当时使用的是Qt 5.8开发环境。因此在Qt 5及其以上版本的开发环境实践该书代码时需要在.pro文件中写入:QT += widgets。

ii)      quote关键字用于引用目录, 等同于定义一个环境变量。

iii)     INCLUDEPATH和DEPENDPATH的路径就是其字面路径,如果字面路径还有子目录,子目录是不会被检索到的。

iv)     如果需要利用Qt的翻译功能, 则需要写: TRANSLATION += <.pro‘s name>_ZH_CN.ts。这里语言和区域名字一定要严格,否则之后生成的同名.qm文件无法被Qt翻译器加载。

v)      如果需要利用预编译功能以加快编译速度,则需要写:PRECOMPILED_HEADER += <需要预编译的头文件>,可在Qt的项目中添加一个.h文件,里边include要预编译的头文件,这样可以加快编译速度。常用的头文件有: <QtGui>, <QtCore>, <QtWidgets>等。

vi)     如果需要利用在多核CPU上的并行编译功能以加快编译速度,则需要写:QMAKE_CXXFLAGS += /MP

注: v), vi)来源于“为什么 Qt Creator 的编译如此之慢? - 姚冬的回答 - 知乎https://www.zhihu.com/question/23045749/answer/23659031” ,感谢大神的解答!

vii)    如果需要禁用Qt的断言:需要写入: DEFINES += QT_NO_DEBUG。这样断言就不会生效了。

viii)   $$PWD虽然指项目的顶级目录, 但是在Qt下, 如果项目是debug版本, 则$$PWD实际指项目"build-*-Debug"目录下的"debug"目录; 如果项目是release版本, 则$$PWD实际指项目"build-*-Release"目录下的"release"目录。

ix)     "TARGET": 语法: TARGET = <字符串>, 含义: 令生成的exe或者库文件使用该字符串作为文件名。

x)      "TEMPLATE": 语法: TEMPLATE = app / lib, 含义: app: 生成exe; lib: 生成库文件。注: 如果某个项目的*.pro文件中仅有"TEMPLATE = lib", 则生成动态库。

xi)     "DESTDIR": 语法: DESTDIR = <字符串>, 含义: 生成的库或exe的存放位置, "/"符号会自动适应windows平台, 如果没有指定对应的目录, Qt会自动创建。

xii)    如果仅仅指定了"DESTDIR"和"DLLDESTDIR", 那么两个目录下都会生成动态库; 如果指定CONFIG += staticlib, 就会补充生成静态库了。

xiii)   为编译的Debug库添加d后缀, 需要在.pro文件中写入:
         !debug_and_release|build_pass {
             CONFIG(debug, debug|release) {
                 TARGET = $$member(TARGET, 0)d
             }
         }
         这样Debug版的some库及其.pdb文件名就是: somed.lib及somed.pdb; Release版的some库文件名就是: some.lib了。

注: xiii)参考了QtitanRibbon库源代码的.pro文件。

原文地址:https://www.cnblogs.com/r0xFED/p/9568784.html

时间: 2024-08-04 01:46:28

Qt .pro文件的一些用法的相关文章

Qt .pro文件 详解

1. TEMPLATE变量TEMPLATE描述了为建立目标文件而采用何种模板,即生成何种形式的Makefile文件.Qmake工具定义了5种模板:1. 应用程序App,为建立一个Qt应用程序创建Makefile文件;2. 库lib,为建立引用程序库而创建Makefile文件;3. 子工程 subdirs,为建立子目录下的目标文件创建一个Makefile文件,子目录通过变量SUBDIRS指定(子目录下的工程文件也需要指出使用何种模板);4. VC应用程序vcapp,为Visual Studio 生

QT pro文件详细写法+实例

很多的初学者都没有注意pro 文件的内容 今天简单的介绍一下 这个文件主要内容 TEMPLATE:这个变量是用来定义你的工程将被编译成什么模式.如果没有这个设置,系统将默认编译为application. TEMPLATE=app表示这个project将被编译成一个应用程序(application) lib(生成库的Makefile) subdirs(生成有多级目录管理的Makefile), vcapp,vclib,vcsubdirs(对应Windows 下面VC) TARGET:生成最后目标的名

统一开发环境,qt pro转vs工程的便捷工具

qt工程转vs工程的脚本工具 问题描述: 当多人用vs配合qt creator进行开发时,有时会遇到将pro文件转换成vcxproj文件后,转移到其他的PC上,用vs编译工程出现编译或链接错误. 解决方案: 首先,统一开发环境,例如使用vs2010与Qt5.5.1. 其次,配置QTDIR环境变量,该环境变量为qt creator的安装路径,如“C:\Qt\Qt5.5.1\5.5\msvc2010”(win10操作系统). 最后,使用qmake工具,将pro文件转换成vcxproj文件.将vcxp

Qt之pro文件解析

在我们创建Qt工程项目时,Qt Creator总会创建一个.pro文件,我们称.pro文件为Qt的工程管理文件.一个工程项目可以包含一个或多个.pro文件.理解和掌握pro文件的用法,将有利于Qt开发人员对项目工程文件的组织和管理. 下面来看一下pro文件中的内容:  第1~5行为注释信息,说明这个文件生成的时间. 第8行表明这个项目使用的模块.core模块包含了Qt的核心功能,其他所有模块都依赖于这个模块:gui模块提供了窗口系统集成.时间处理.OpenGL和OpenGL ES集成,2D图形.

QT 基础(三) pro 文件的认识

工作中,感觉pro文件的有些内容真不太懂,现系统性的学习一下.于此备录,分享共勉. 为了更好的理解,先创建一个简单的工程作为实践. [1]创建一个pro文件 1.1 新建proDemo工程.步骤如下:Qt Creator--->New Project--->应用程序--->Qt Widgets Application--->名称为:proDemo(创建路径自己拟定,本地为F:\Source\proStudy)--->类信息保持不变--->完成 1.2 提取pro文件.在

QT基础(五)QT工程pro文件模板变量 使用

QT工程pro文件模板变量(TEMPLATE)模板变量告诉qmake为这个应用程序生成哪种makefile.下面是可供使用的选择: app - 建立一个应用程序的makefile.这是默认值,所以如果模板没有被指定,这个将被使用. lib - 建立一个库的makefile. vcapp - 建立一个应用程序的Visual Studio项目文件. vclib - 建立一个库的Visual Studio项目文件. subdirs - 这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文

QT 中 .pro文件各变量的意义

QT工程中 .pro文件中各变量意义: HEADERS 指定工程的 C++头文件(.h). ◆ SOURCES 指定工程的C++实现文件(.cpp). ◆ FORMS 指定需要 uic 处理的由 Qt 设计师生成的.ui 文件. ◆ RESOURCES 指定需要 rcc 处理的.qrc 文件. ◆ DEFINES 指定预定义的 C++预处理符号. ◆ INCLUDEPATH 指定 C++编译器搜索全局头文件的路径. ◆ LIBS 指定工程要链接的库.库既可以通过绝对路径指定,也可以使用源自 Un

使用powershell批量添加Qt的文件(生成pro)

想使用QtCreator作为编辑器编辑keil或者IAR的工程,需要生成.pro文件,于是使用powershell批量处理. 源码如下: $incPath = dir -filter "*.h" -Recurse $headList="","" $pathList = "","" foreach($fpath in $incPath) { $headList+=$fpath.DirectoryName +

QT5中的pro文件中为何要加入&quot;QT += widgets&quot;

在pro文件里写"QT+=widgets"表示引入QtWidget这个module,qmake在生成makefile的时候,会设置好include path 和 lib path,在link时候设置好libs. QT += widgets包括两部分: 1:Lib,这个是lib的路径和lib文件的文件名. 2:include  , *.h的路径在pro文件里设置,.h的文件名用代码里的#include设定 QT += widgets 貌似可以分开写成(大致是这样): INCLUDE+=