Qt的pro工程文件语法学习.docVIP

  • 4
  • 0
  • 约3.9千字
  • 约 8页
  • 2020-08-21 发布于河北
  • 举报
Qt的.pro工程文件语法学习 标签:? pro qmake 语法 2016-01-15 12:25?171人阅读? 评论(0)? \o 收藏 收藏? \o 举报 举报 ?分类: ? Qt5(6)? 版权声明:本文为博主原创文章,未经博主允许不得转载。   我们编写Qt应用程序时,不管使用Qt Creator还是VS或者Eclipse,不管是Qt Widgets还是Qt Quick,总会发现有.pro文件,我们称.pro文件为Qt的工程管理文件,它存在的目的是列举工程中包含的源文件。类似于makefile,一个工程中可以包含一个或多个.pro文件。因此对于使用Qt的开发人员来说,熟悉.pro工程文件的语法,懂得阅读和修改.pro文件,将有利于对项目工程的文件组织和管理。?   qmake、.pro文件、makefile文件的关系简单来说就是: qmake工具使用了与平台无关的.pro文件生成与平台相关的makefile文件。   所以虽然本文标题为.pro文件语法学习,实际上应该是qmake的语法学习,但是因为IDE把qmake隐藏起来了,我们接触地更多的是.pro文件,因此还是使用这样的标题。 ================================ TARGET变量 TEMPLATE变量 CONFIG变量:   首先我们需要知道工程文件主要分为三种:app(单独的应用程序)、lib(静态或动态库)和subdirs(递归编译)。工程文件的类型可以使用TEMPLATE变量来指定。   TARGET是用来定义应用程序的名字的,而程序的扩展名则由TEMPLATE来定义。例如:TARGET = hello,TEMPLATE = app,则在Linux下会生成hello(无后缀的ELF可执行文件),对应的在Windows下会生成hello.exe。   TEMPLATE和CONFIG共同定义了目标类型,以下是几种常见情况: TEMPLATE = app,生成标准程序(注意如果没有TEMPLATE这一项,那么默认工程就是app)。 TEMPLATE = subdirs,子项目工程模板,可以用它来创建一个能够进入特定目录并且编译子目录里的目标文件。此时除了TEMPLATE = subdirs,还需要指定SUBDIRS变量,在每个子目录中,qmake会搜寻以目录命名的.pro文件,并且会编译该工程。 TEMPLATE = lib,生成库文件,若不指定CONFIG变量,则编译为共享库;若CONFIG += staticlib,则编译为静态库;若CONFIG += plugin,则编译为插件(插件总是动态库)。 对于app或者lib工程,以下是较常使用的一些变量: TARGET变量:指定可执行文件或库的基本文件名,其中不包含任何的扩展、前缀或版本号。(默认的是当前的目录名) CONFIG变量:指定各种用于工程配置和编译的参数 HEADERS变量:指定工程的C++头文件(.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变量:指定工程所要使用的Qt模块(默认的是core gui,对应于QtCore和QtGui模块) VERSION变量:指定目标库的版本号 DESTDIR变量:指定生成的可执行文件放置的目录。(默认值是平台相关的,例如在Linux上,值当前目录;在Windows上,则是指debug或release子目录) DLLDESTDIR变量:指定目标库文件放置的目录(默认与DESTDIR相同) OBJECTS_DIR变量:指定目标文件(.o文件)的存放目录 .pro文件中的注释:?   注释以井号(#)开头,在行尾处结束。 .pro文件中的一个条目的语法通常具有如下形式: variable = values 1 1   values是字符串的列表,例如:CONFIG = qt release warn_off,是指将列表 [“qt”, “release”, “warn_off”] 赋给CONFIG变量,注意!它会覆盖CONFIG变量以前设置的各个值。因此

文档评论(0)

1亿VIP精品文档

相关文档