资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

KS02-05pri文件有啥用?-创新互联

版权声明

----------------------------------------------------------------

创新互联建站秉承实现全网价值营销的理念,以专业定制企业官网,成都网站建设、成都做网站,微信小程序开发,网页设计制作,成都手机网站制作营销型网站帮助传统企业实现“互联网+”转型升级专业定制企业官网,公司注重人才、技术和管理,汇聚了一批优秀的互联网技术人才,对客户都以感恩的心态奉献自己的专业和所长。

作者: 女儿叫老白

转载请注明出处!

网页版课程源码 提取码:1uy7

引言

----------------------------------------------------------------

在前面的章节中我们介绍了pro文件的常用配置。当我们进行项目研发时,在各个子项目的pro中经常会出现重复配置,为了处理这种问题,Qt提供了另外一个项目配置文件:pri文件。在pri文件里,我们可以编写公共的变量给各个子项目用,还可以配置各种编译选项、配置各种路径。在本节中,我们将讨论一下pri文件都有哪些作用。

正文

----------------------------------------------------------------

在本节中,我们将以常用关键字为线索,介绍pri文件所能起到的各种功能。我们准备为大家介绍如下关键字:

表02-05-01

关键字

含义

include

在pro中引入其他的pri文件

环境变量

在pri中使用环境变量

变量

在pri中定义与使用变量

函数

pri中提供的常用函数

unix/win32

配置不同平台下的编译配置项

DEFINES

在pri中定义宏

CONFIG

项目的配置参数

QMAKE_CXXFLAGS

配置编译警告

现在,我们来分别进行介绍:

1,  include --- 在pro中引入其他的pri文件

pri文件编写完成之后,可以在项目文件(pro文件)或者其他pri文件中引用。

语法include  (pri文件全路径名)  

比如:

1.    

include  ($(TRAINDEVHOME)/src/gui_base.pri)

 

注:

1.     请注意include后面有空格。

2.     pri文件路径中的目录分隔符要用"/",请不要使用"\"。

3.     pri文件只能被另一个pri文件或pro文件引用,不能在.h或.cpp文件中用#include语句进行引用。

2,  环境变量 --- 在pri中使用环境变量

有时候,在项目编译时我们会用到一些环境变量。比如,将项目编译为32位还是64位,编译成debug版还是release版等等。那么,在pri文件中我们怎样使用这些环境变量呢?

    语法: $$(环境变量名称)

比如:

1.      

2.      

include  ($$(TRAINDEVHOME)/src/gui_base.pri)

OBJECTS_DIR   = $$(TRAINDEVHOME)/obj/chapter02/ks02_04

在上述例子中,我们用到了TRAINDEVHOME这个环境变量值,分别用来描述gui_base.pri的文件路径以及ks02_04项目的OBJECT_DIR配置项的值。

3  变量与环境变量 --- 在pri中定义与使用变量、环境变量

除了环境变量之外,有时候为了方便还可以自己定义一些变量。

比如,Qt的isEmpty()函数不识别环境变量,因此我们可以这样做:

1.      

2.      

3.      

4.      

DEVHOME   = $$(TRAINDEVHOME)

isEmpty(DEVHOME)   {

error('TRAINDEVHOME'环境变量必须被定义.)

}

在上述代码中,因为isEmpty()函数不识别环境变量但是可以识别我们定义的变量,所以我们定义了DEVHOME变量,这样isEmpty()就可以根据TRAINDEVHOME这个环境变量的取值进行判断,如果未定义TRAINDEVHOME环境变量,那么就会报错。

使用语法同系统环境变量不同,变量名不用括号。

语法:$$变量名

1.      

2.      

TEMPDIR  = $$(TRAINDEVHOME)/obj/chapter02/ks02_04

OBJECTS_DIR   = $$TEMPDIR

请注意:

1)  在一行语句中,所引用的变量或环境变量的个数不能超过1个,

错误的写法:

1.      

2.      

CHAPTER   = chapter02

TEMPDIR = $$(TRAINDEVHOME)/obj/$$CHAPTER/ks02_04

正确的写法:

1.    

TEMPDIR = $$(TRAINDEVHOME)/obj/chapter02/ks02_04

2) 使用环境变量的语法跟使用变量的语法不同(环境变量名要用括号):

环境变量: $$(环境变量名)

变量:     $$变量名

4, 函数  --- pri中提供的常用函数

在上面的示例中,我们介绍了isEmpty()函数、error()函数,实际上Qt还提供了一些其他函数:

1)  isEmtpy() 

用来判断一个变量是否为空值,比如:

1.      

2.      

3.      

4.      

DEVHOME   = $$(TRAINDEVHOME)

isEmpty(DEVHOME) {

error('TRAINDEVHOME'环境变量必须被定义.)

}

2)  equals(a, b)

判断某个变量的 值是否与指定值相等,比如:

1.      

2.      

3.      

4.      

5.      

BUILDTYPE   = $$(TRAINBUILDTYPE)

equals(BUILDTYPE, debug){

CONFIG += debug

CONFIG -= release

}

3)  error()

用来输出错误信息,并终止当前命令,比如:

1.      

2.      

3.      

isEmpty(DEVHOME)   {

error('TRAINDEVHOME'环境变量必须被定义.)

}

4)  contains(x, y)

用来判断一个变量x是否包含字符串y,比如下面的配置表示如果TRAIN_QMAKESPEC变量包含” hpux.* ”,则执行括号中的配置:

1.      

2.      

3.      

4.      

5.      

contains(TRAIN_QMAKESPEC, hpux.*   ) {

# HPUX下全面支持C++

QMAKE_CXXFLAGS *= -Aa

LIBS += -lrt

}

5, unix/win32  --- 配置不同平台下的编译配置项

1.      

2.      

3.      

4.      

5.      

6.      

7.      

8.      

9.      

unix{

contains( TRAIN_QMAKESPEC, g++ ) {

CONFIG *= precompile_header

}

}

#WIN32下声明使用预编译头文件

win32{

CONFIG *= precompile_header

}

注:

1.     linux也使用unix配置。

2.     所有的左括号“{”,跟起始配置在同一行,不要换行。

6, DEFINES --- 在pri中定义宏

可以根据需要定义宏定义,这些宏定义可以在源代码中使用,比如

1.      

2.      

3.      

4.      

5.      

6.      

7.      

8.      

9.      

10.   

11.   

12.   

13.   

#UNIX下编译设置

unix{

#表示unix或linux操作系统

DEFINES *= unix  __unix

}

#WIN32下编译设置

win32{

#表示WINDOWS操作系统

DEFINES *= WIN32

}

equals(BUILDBIT,64){

DEFINES *= TRAIN_64

}

在上述代码中,在pri中定义的宏定义" unix"、" __unix "、"WIN32"、"TRAIN_64"都可以在代码中使用,比如:

1.      

2.      

3.      

4.      

5.      

6.      

7.      

#ifdef    __unix

……

#endif

#ifdef  TRAIN_64

……

#endif

注:

1.   DEFINES 后面是 *=,(就是 星号=),用来表示累加。

7, CONFIG --- 项目的配置参数

CONFIG配置项在pri中与pro中用法一样。

常用的参数:

CONFIG  += console qt debug release thread warn_on

1)  console

表示本应用是命令行程序,可以启动一个终端(命令行)。

2)  qt

表示本应用要加载Qt的库,链接时要链接qt类库。

3)  debug/release

表示程序是debug版本还是release版本。

4)  thread

表示程序是否启用多线程,如果没有thread选项,那么程序无法使用多线程。

5)  warn_on

表示是否显示编译警告。个人建议开启,因为有些编译警告还是很重要的。如果不关注就可能导致程序运行时异常。

8, QMAKE_CXXFLAGS  --- 配置编译警告

用来为编译器指明一些处理标志,比如:

1.      

2.      

3.      

4.      

# 去掉strcpy等编译警告

QMAKE_CXXFLAGS   *= -wd499

# ui 生成的文件使用 utf-8 编码,编译时产生4819 警告,因此去掉

QMAKE_CXXFLAGS   *= -wd4819

结语

----------------------------------------------------------------

在进行项目开发时经常用到pri文件。当然,如果您仅仅在编写一个独立的exe模块,pri文件可能不会发挥太大作用,因为可以把pri中的配置项直接编写到pro文件中。但是小编还是建议大家养成习惯,编码时要做到标准化。比如建立一套pri文件,这样在建立新项目时将会非常方便,这些内容我们将在下一节介绍。现在,我们先来回顾一下本节的注意事项:

1, pri文件路径中的目录分隔符要用"/",请不要使用"\"。

2, pri文件只能被pro文件或另一个pri文件引用。

3, 使用环境变量的语法跟使用变量的语法不同:

环境变量: $$(环境变量名)

变量:     $$变量名

4, 在pro或pri中,Qt提供了一些函数来方便判断或者输出信息,比如 isEmpty()、error()等。

5, 在使用CONFIG的配置项进行判断时,所有的左括号“{”,跟起始配置在同一行,不要换行。

6, 在pri中定义的宏可以在代码中使用

好了,总结就到这里,祝大家编程愉快。

----------------------------------------------------------------

《Qt入门与提高-GUI产品开发》目录请添加链接描述
上一节:KS02-04 pro文件常用配置
下一节:KS02-06 一劳永逸:引入pri体系

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:KS02-05pri文件有啥用?-创新互联
本文路径:http://cdkjz.cn/article/dpopjj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220