Qt之使用qmake

来源:互联网 发布:mysql show 退出 编辑:程序博客网 时间:2024/06/05 01:08

  qmake工具是与Qt一起提供的。它用于编译Qt本身,并且生成Qt自带的工具和例子。可以使用qmake工程文件(.pro文件)编译应用程序和插件。.pro文件的目的是列举工程包含的源文件。由于qmake用于编译Qt及其相关工具,所以它很熟悉Qt,并且能够生成一些触发moc、uic和rcc的规则。因此,qmake的语法很简明。

  工程文件主要分为三种:app(独立的英语程序)、lib(静态和动态库)和subdirs(递归编译)。可以使用TEMPLATE变量指定工程文件的类型,如下:

TEMPLATE = lib

subdirs模板可以用来编译子目录里的目标文件。在这种情况下,除TEMPLATE = subdirs外,还需要指定SUBDIRS变量。在每个子目录中,qmake会搜寻以目录名命名的.pro文件,并且会编译该工程。
如果没有TEMPLATE这一项,那么默认工程是app。

一个.pro文件中的条目的语法通常有如下的形式:

variable = values

values是字符串的列表,注释以井号(#)开头,在行尾处结束。例如:

CONFIG = qt  release warn_off   #I know what I‘m doing

将列表[“qt”, “release”, “warn_off”]赋给CONFIG变量,它会覆盖以前的各个值。额外的操作符作为=操作符的补充。+=操作符可以用来扩展变量的值。例如:

CONFIG = qtCONFIG += releaseCONFIG += warn_off

这几行代码同样可以有效地把列表[“qt”, “release”, “warn_off”]赋值给CONFIG变量。-=操作符从当前的变量中移除所有出现的指定的值。例如:

CONFIG = qt  release warn_offCONFIG -= qt

会使CONFIG的值变成[“release”, “warn_off”]。*=操作在一个变量上添加一个值,但要求被添加的值不在变量的列表上否则,就什么都不做。

SOURCES *= main.cpp

将main.cpp实现文件添加到工程中,只有当还没有被添加的情况下才添加它。

=操作符可以使用指定的值替换符合正则表达式的值。例如:

SOURCES ~= s/\.cpp\b/.cxx/

使用.cxx替换SOURCES变量中所有的.cpp文件的扩展名。

如果有几个工程文件需要共享相同的项,则可以把相同的项提取到单独的文件中,在各自的.pro文件中使用include()语句包含它们。例如:

include(../common.pri)HEADERS += window.hSOURCES  += main.cpp \                        window.cpp

通常,打算被别的工程文件所包含的工程文件会带有.pri(工程包含)的扩展名。

qmake提供了访问其他qmake变量、环境变量和配置参数的方法。如下图:
这里写图片描述
我们可以设置任意变量的值,并且可以使用$varName${varName}语法引用它。例如:

MY_VERSION = 1.2TARGET   = imgpro_$${MY_VERSION}