日志
2.5 知识点 pri文件有啥用
2020-12-24 14:46
当进行中大型Qt项目研发时,在各个子项目的pro文件中经常会出现重复配置。为了处理这个问题,Qt提供了另外一个项目配置文件:pri文件。在pri文件里,可以编写用于各个子项目的公共变量,还可以配置各种公共的编译选项、配置各种公共路径。本节将以常用关键字(见表2-3)为线索,介绍pri文件的各种用途。 表2-3 pro和pri文件常用关键字
下面分别进行介绍。 1.include include用来在pro或pri中引入某pri文件。 语法:include (pri文件全路径名) 比如:
注意: (1)include后面有空格。用括号把pri文件名括起来。 (2)pri文件路径中的目录分隔符用“/”,请不要使用“\”。 (3)pri文件只能被另一个pri文件或pro文件引用,不能在.h或.cpp文件中用#include语句引用pri文件。 2.环境变量 有时在构建项目时会碰到如下问题:将项目编译为32位还是64位,编译成Debug版还是Release版等。这可以通过定义环境变量来解决。那么,在pri文件中怎样使用这些环境变量呢?使用环境变量的语法如下: $$(环境变量名称) 下面看一下对环境变量TRAINDEVHOME的使用。该环境变量分别用来描述gui_base.pri的文件路径以及ks02_04项目的OBJECT_DIR配置项的值。 代码清单2-14
3.变量与环境变量 除了环境变量之外,有时候为了方便还可以自定义一些变量。比如,Qt的isEmpty()函数不识别环境变量,因此可以通过变量来解决这个问题(见代码清单2-14)。 代码清单2-14
isEmpty()函数不识别环境变量,但它可以识别自定义的变量,所以在代码清单2-14中定义了DEVHOME变量。这样isEmpty()就可以通过DEVHOME变量间接对TRAINDEVHOME这个环境变量的取值进行判断。如果未定义TRAINDEVHOME环境变量,编译器就会报错。 变量的使用语法同环境变量不同,使用变量时不加括号。 变量的使用语法:$$变量名。比如:
对环境变量和变量的使用做一下说明: (1)在一行语句中,所引用的变量或环境变量的总个数不能超过1个。 错误的写法:
正确的写法:
(2)使用环境变量的语法跟使用变量的语法不同(环境变量名要用括号)。 环境变量语法: $$(环境变量名) 变量语法: $$变量名 4.函数 在代码清单2-14中,介绍了isEmpty()函数、error()函数,实际上Qt还提供了一些其他函数。 1)isEmtpy() isEmtpy()函数用来判断一个变量是否为空值,比如:
2)equals(a, b) equals(a, b)函数用来判断某个变量的值是否与指定值相等。代码清单2-15表示如果BUILDTYPE的值是debug则执行标号①处的代码。 代码清单2-15
3)error() error()函数用来输出错误信息,并终止当前构建过程,比如:
4)contains(x, y) contains(x, y)函数用来判断一个变量x是否包含字符串y。代码清单2-16表示如果TRAIN_QMAKESPEC的值包含“hpux.”,则执行花括号中的配置。 代码清单2-16
5)unix/win32 unix和win32用来配置不同平台下的配置项。如代码清单2-17中Linux、UNIX平台均使用unix配置项,而Windows平台使用win32配置项。建议所有的{都跟配置项关键字在同一行。比如,标号①处unix后面的{要跟unix写在同一行。 代码清单2-17
6)DEFINES DEFINES用来在pro、pri文件中定义宏。这些宏可以在源代码中使用,比如代码清单2-18中标号①处、标号②处、标号③处定义的unix、__unix、WIN32、TRAIN_64。 代码清单2-18
注意:标号①处、标号②处、标号③处的DEFINES后面的*=表示累加。 代码清单2-18中定义的unix、__unix、WIN32、TRAIN_64,可以在源代码中使用。比如:
7)CONFIG CONFIG配置项在pri中与pro中用法一样。CONFIG常用的选项有:
下面分别进行介绍。 (1)console表示本项目是命令行程序,在启动本项目的目标程序时会启动一个终端(命令行)。 (2)qt表示本项目要加载Qt的库,链接时要链接Qt的类库。 (3)debug和release分别表示将项目构建成Debug版本还是Release版本。 (4)thread表示程序是否启用多线程。如果没有thread选项,项目将无法使用多线程。 (5)warn_on表示是否显示编译警告。因为有些编译警告还是很重要的,所以建议开启该配置项。如果不关注或者不处理编译警告,也有可能导致程序运行时异常。 8)QMAKE_CXXFLAGS QMAKE_CXXFLAGS用来为编译器指示一些编译标志,比如:
在进行中大型项目开发时经常会用到pri文件。如果仅仅编写一个独立的EXE模块,那么pri文件可能不会发挥太大作用,因为可以把pri中的配置项直接编写到pro文件中。但是建议进行软件研发时要进行标准化操作,比如:建立一套pri文件并在团队的所有项目中使用,那么在建立新项目时将会非常方便。 现在,回顾一下本节的主要内容: (1)pri文件路径中的目录分隔符要用“/”,请不要使用“\”。 (2)pri文件只能被pro文件或另一个pri文件引用。 (3)使用环境变量的语法跟使用变量的语法不同: 使用环境变量的语法: $$(环境变量名) 使用变量的语法: $$变量名 (4)在pro或pri中,Qt提供了一些函数来进行判断或者输出信息,比如 isEmpty()、error()等。 (5)在使用CONFIG的配置项进行判断时,建议所有的{跟配置关键字在同一行,不要换行。 (6)在pri中定义的宏可以在代码中使用。 ---------------------------------------------------------------------------------------------------------------------------------------------- 《Qt 5/PyQt 5实战指南》目录 |
下一篇: 3.1 案例5 怎样实现国际化
上一篇: 2.4 知识点 pro文件常用配置