




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Qt的pro工程文件语法学习Qt的pro工程文件语法学习PAGE6Qt的pro工程文件语法学习Qt的.pro工程文件语法学习标签:proqmake语法2016-01-15 12:25171人阅读评论(0)收藏举报分类:Qt5(6)版权声明:本文为博主原创文章,未经博主允许不得转载。我们编写Qt应用程序时,不管使用Qt Creator还是VS或者Eclipse,不管是Qt Widgets还是Qt Quick,总会发现有.pro文件,我们称.pro文件为Qt的工程管理文件,它存在的目的是列举工程中包含的源文件。类似于makefile,一个工程中可以包含一个或多个.pro文件。因此对于使用Qt的开发
2、人员来说,熟悉.pro工程文件的语法,懂得阅读和修改.pro文件,将有利于对项目工程的文件组织和管理。qmake、.pro文件、makefile文件的关系简单来说就是:qmake工具使用了与平台无关的.pro文件生成与平台相关的makefile文件。所以虽然本文标题为.pro文件语法学习,实际上应该是qmake的语法学习,但是因为IDE把qmake隐藏起来了,我们接触地更多的是.pro文件,因此还是使用这样的标题。=TARGET变量 & TEMPLATE变量 & CONFIG变量:首先我们需要知道工程文件主要分为三种:app(单独的应用程序)、lib(静态或动态库)和subdirs(递归编译)
3、。工程文件的类型可以使用TEMPLATE变量来指定。TARGET是用来定义应用程序的名字的,而程序的扩展名则由TEMPLATE来定义。例如:TARGET = hello,TEMPLATE = app,则在Linux下会生成hello(无后缀的ELF可执行文件),对应的在Windows下会生成。TEMPLATE和CONFIG共同定义了目标类型,以下是几种常见情况:TEMPLATE = app,生成标准程序(注意如果没有TEMPLATE这一项,那么默认工程就是app)。TEMPLATE = subdirs,子项目工程模板,可以用它来创建一个能够进入特定目录并且编译子目录里的目标文件。此时除了TEM
4、PLATE = subdirs,还需要指定SUBDIRS变量,在每个子目录中,qmake会搜寻以目录命名的.pro文件,并且会编译该工程。TEMPLATE = lib,生成库文件,若不指定CONFIG变量,则编译为共享库;若CONFIG += staticlib,则编译为静态库;若CONFIG += plugin,则编译为插件(插件总是动态库)。对于app或者lib工程,以下是较常使用的一些变量:TARGET变量:指定可执行文件或库的基本文件名,其中不包含任何的扩展、前缀或版本号。(默认的是当前的目录名)CONFIG变量:指定各种用于工程配置和编译的参数HEADERS变量:指定工程的C+头文件
5、(.h)SOURCES变量:指定工程的C+实现文件(.cpp)FORMS变量:指定需要uic处理的由Qt设计师生成的.ui文件RESOURCES变量:指定需要rcc处理的.qrc文件(资源文件)LEXSOURCES变量:指定工程的lex源文件(.l)YACCSOURCES变量:指定工程中的yacc源文件(.y)DEFINES变量:指定预定义的C+预处理器符号INCLUDEPATH变量:指定C+编译器搜索全局头文件的路径LIBS变量:指定工程要链接的库。库既可以通过绝对路径指定,也可以使用源自Unix的-L和-l标识符来指定(例如:-L/usr/local/lib和-ldb_cxx)QT变量:指
6、定工程所要使用的Qt模块(默认的是core gui,对应于QtCore和QtGui模块)VERSION变量:指定目标库的版本号DESTDIR变量:指定生成的可执行文件放置的目录。(默认值是平台相关的,例如在Linux上,值当前目录;在Windows上,则是指debug或release子目录)DLLDESTDIR变量:指定目标库文件放置的目录(默认与DESTDIR相同)OBJECTS_DIR变量:指定目标文件(.o文件)的存放目录.pro文件中的注释:注释以井号(#)开头,在行尾处结束。.pro文件中的一个条目的语法通常具有如下形式:variable = values11values是字符串的列
7、表,例如:CONFIG = qt release warn_off,是指将列表 “qt”, “release”, “warn_off” 赋给CONFIG变量,注意!它会覆盖CONFIG变量以前设置的各个值。因此我们通常用 += 操作符来扩展变量的值。如:CONFIG = qtCONFIG += releaseCONFIG += warn_off123123同样,我们也可以用 -= 操作符从当前的变量中移除任意的指定值。如:CONFIG = qt release warn_offCONFIG -= qt1212会使CONFIG变量的值变成 “release”, “warn_off”。另外还有=
8、操作符和 = 操作符。= 操作符在一个变量上添加一个值,但要求被添加的值不在变量的列表上,否则将不做任何事情。例如:SOURCE *= 11这一行将把文件添加到工程中,只有当它还没有被添加的情况下才会添加。最后,= 操作符使用指定的值替换符合正则表达式的值,这是sed的语法。例如:SOURCES = s/.cppb/.cxx/11使用.cxx替换SOURCES变量中所有.cpp文件的扩展名。除了使用qmake定义的标准变量外,我们也可以设置任意变量和值,并且可以使用$varName 或者$varName 语法引用它。例如:MY_VERSION = TARGET = Hello_$MY_VERS
9、ION1212使用$PWD 可以获取当前文件所在的目录路径。使用内置函数$lower() 可以把字符串转换为小写。而内置函数$system() 允许我们从外部应用程序中产生字符串,例如想要确认当前的UNIX版本,可以这样写:OS_VERSION = $system(uname -r)11然后,可以在条件中使用结果变量,并与contains()合用:contains(OS_VERSION, SunOS): SOURCES += 11有时候可能需要在.pro文件中指定包含空格的文件名。在这种情况下,只需要简单地把文件名用引号括起来即可。当在不同平台上编译工程时,可能有必要基于平台指定不同的文件或者
10、不同的参数。qmake的条件判断语法是:condition then-case else else-case1234512345condition部分可以是平台名字(例如:win32、unix或者macx),或者更复杂的断言。then-case和else-case部分使用标准语法为变量赋值。例如:win32 SOURCES += else SOURCES += 1234512345else分支是可选的。为了方便,当then-case部分仅有一条变量赋值,而且在没有else-case分支时,qmake也支持单行形式的语法。例如:macx: SOURCES += 11如果有几个工程文件需要共享相同的项,则可以把相同的项提取到单独的文件中,在各自的.pro文件中使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校艺术团体活动的丰富与管理计划
- 业务流程管理的马工学视角试题及答案
- 小米13新品发布会策划方案
- 电子技能实训 教案全套-教学设计
- 物流信息系统的架构分析试题及答案
- 2024监理工程师考试模拟题试题及答案
- 黑龙江民族职业学院《数据挖掘综合实践》2023-2024学年第二学期期末试卷
- 黑龙江省伊春市乌伊岭区2024-2025学年数学三下期末达标检测试题含解析
- 黑龙江省克东县玉岗镇第二中学2024-2025学年六年级下学期5月模拟预测数学试题含解析
- 黑龙江省哈尔滨市69中学2024-2025学年初三高中毕业生第二次复习统一检测试题物理试题含解析
- 多重耐药菌防控专家共识
- 教育家的师德情怀(终稿)课件
- 复变函数与积分变换全套课件
- 厂内机动车辆课件
- 学校食堂餐厨具操作规程
- DB32T 3916-2020 建筑地基基础检测规程
- 公务员登记表
- 自动控制原理全套课件
- 质量部KPI考核指标
- 肩关节镜下肩袖修补术的护理查房ppt
- 菠菜色素提取和分离
评论
0/150
提交评论