qmake 手册 010 配置 qmake
属性
qmake 拥有一个用于持久配置的系统,它允许我们在 qmake 中设置一个属性,并在每次调用 qmake 时查询它。我们可以使用如下方式在 qmake 中设置属性:
qmake -set PROPERTY VALUE
我们可以使用适当的属性名和值来代替上面命令中的 PROPERTY 和 VALUE 的内容
我们可以在 qmake 中通过如下两种方式查看属性信息:
qmake -query PROPERTY
qmake -query #请求展示全部的 PROPERTY/VALUE 对的列表
注意: qmake -query 除了使用 qmake -set 属性值设置的属性外,还列出了内置属性。这些信息将被保存到 QSettings 对象中(这意味着它将存储在不同平台的不同位置)。
下面的列表中列出了内置的属性:
属性 | 说明 |
---|---|
QMAKE_SPEC | 主机构建期间解析并存储在 QMAKESPEC 变量中的主机 mkspec 的简称 |
QMAKE_VERSION | qmake 的版本 |
QMAKE_XSPEC | 在目标构建期间解析并存储在 QMAKESPEC 变量中的目标 mkspec 的简称 |
QT_HOST_BINS | 主机可执行文件的位置 |
QT_HOST_DATA | qmake 使用的主机可执行程序的数据位置 |
QT_HOST_PREFIX | 所有主机路径的默认前缀 |
QT_INSTALL_ARCHDATA | 与体系结构相关的通用 Qt 数据的位置 |
QT_INSTALL_BINS | Qt 二进制文件的位置(工具和应用程序) |
QT_INSTALL_CONFIGURATION | Qt 的设置保存的位置。不适用于 Windows |
QT_INSTALL_DATA | 与体系结构无关的常规 Qt 数据的位置 |
QT_INSTALL_DOCS | 文档位置 |
QT_INSTALL_EXAMPLES | 示例位置 |
QT_INSTALL_HEADERS | 所有头文件的位置 |
QT_INSTALL_IMPORTS | QML 1.x 扩展的位置 |
QT_INSTALL_LIBEXECS | 库在运行时所需的可执行文件的位置 |
QT_INSTALL_LIBS | 库的位置 |
QT_INSTALL_PLUGINS | Qt 插件的位置 |
QT_INSTALL_PREFIX | 所有路径的默认前缀 |
QT_INSTALL_QML | QML 2.x 扩展的位置 |
QT_INSTALL_TESTS | Qt 测试用例的位置 |
QT_INSTALL_TRANSLATIONS | Qt 字符串翻译信息的位置 |
QT_SYSROOT | 目标构建环境使用的sysroot |
QT_VERSION | Qt 版本。建议大家使用 $$QT.<module>.version 变量查询 Qt 模块特定的版本号。 |
例如,我们可以使用 QT_INSTALL_PREFIX 属性查询这个版本的 qmake 对应的 Qt 的安装目录:
qmake -query "QT_INSTALL_PREFIX"
我们可以在 qmake 的 project 文件中通过如下方式使用上面所列出的属性值,具体示例如下所示:
QMAKE_VERS = $$[QMAKE_VERSION]
QMAKESPEC
qmake 需要一个平台和编译器描述文件,该文件包含许多用于生成适当 Makefile 的默认值。标准 Qt 发行版附带了许多这样的文件,位于 Qt 安装目录中的 mkspecs 子目录中。
QMAKESPEC 环境变量通常包含以下内容:
- 包含 qmake.conf 文件的目录的完整路径。在这种情况下,qmake 将从该目录中打开 qmake.conf 文件。如果文件不存在,qmake 将退出并提示错误。
- 平台编译器组合的名称。在这种情况下,qmake 将在编译 Qt 时指定的数据路径的 mkspecs 子目录中指定的目录中进行搜索 (参见 QLibraryInfo::DataPath)。
注意: QMAKESPEC 路径将在 INCLUDEPATH 系统变量的内容之后自动添加到生成的 Makefile 中。
缓存文件
缓存文件是一个特殊的 qmake 读取文件,用于查找 qmake.conf 文件、项目文件或命令行中未指定的设置。运行 qmake 时,它查找一个名为 .qmake 的文件。缓存在当前目录的父目录中,除非指定 -nocache。如果 qmake 没有找到这个文件,它将静默地忽略这个处理步骤。
如果 qmake 找到这个 .qmake 文件。则它将在处理项目文件之前先处理这个文件。
文件扩展名
在正常情况下,qmake 将尝试为我们的平台使用适当的文件扩展名。但是,有时需要覆盖每个平台的默认选项,并显式定义 qmake 要使用的文件扩展名。这是通过重新定义某些内置变量来实现的。例如, moc 文件使用的扩展名可以在项目文件中通过以下方式重新定义:
QMAKE_EXT_MOC = .mymoc
以下变量用于重新定义可被 qmake 识别的常见文件扩展名:
变量 | 简介 |
---|---|
QMAKE_EXT_MOC | 修改用在 moc 文件上的扩展名 |
QMAKE_EXT_UI | 修改用于 Qt Designer UI 文件的扩展名(通常定义在 FORMS 中) |
QMAKE_EXT_PRL | 修改库依赖文件的扩展名 |
QMAKE_EXT_LEX | 更改 Lex 文件使用的后缀(通常定义在 LEXSOURCES 中) |
QMAKE_EXT_YACC | 更改 Yacc 文件使用的后缀通常定义在 YACCSOURCES 中) |
QMAKE_EXT_OBJ | 更改生成的目标文件的后缀 |
上面所有的属性都只接受第一个值,因此我们必须为它分配一个值,该值将在整个项目文件中使用。另外,还有两个变量接受一个值列表:
变量 | 简介 |
---|---|
QMAKE_EXT_CPP | 让 qmake 把带有这些后缀的所有文件解析为 C++ 源文件 |
QMAKE_EXT_H | 让 qmake 把带有这些后缀的所有文件解析为 C++ 头文件 |