配置 qmake

属性

qmake 有一个持久配置系统,它允许你在 qmake 中设置一次属性,并在每次调用 qmake 时查询它。在 qmake 中设置属性的方法如下:

qmake -set PROPERTY VALUE

相应的属性和值应替换为PROPERTYVALUE

从 qmake 获取这些信息的方法如下:

qmake -query PROPERTY
qmake -query #queries all current PROPERTY/VALUE pairs

注意: 除了你用qmake -set PROPERTY VALUE 设置的属性外,qmake -query 还列出了内置属性。

这些信息将被保存到QSettings 对象中(这意味着不同平台的信息将保存在不同的地方)。

以下列表总结了built-in 的属性:

  • QMAKE_SPEC - 主机mkspec 的简称,在主机构建过程中解析并存储在QMAKESPEC变量中。
  • QMAKE_VERSION - 当前的 qmake 版本
  • QMAKE_XSPEC - 目标mkspec 的简称, 它在目标联编过程中被解析并存储在QMAKESPEC变量中。
  • QT_HOST_BINS - 主机可执行文件的位置
  • QT_HOST_DATA - qmake 使用的主机可执行文件数据的位置
  • QT_HOST_LIBS - 主机库的位置
  • QT_HOST_LIBEXECS - 运行时主机库所需的可执行文件的位置
  • 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_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 - 目标编译环境使用的系统根目录
  • QT_VERSION - Qt 版本。我们建议您使用 $$QT.<module>.version 变量来查询 Qt 模块的具体版本号。

例如,您可以使用QT_INSTALL_PREFIX 属性查询此版本 qmake 的 Qt 安装情况:

qmake -query "QT_INSTALL_PREFIX"

你可以按以下方式查询项目文件中的属性值:

QMAKE_VERS = $$[QMAKE_VERSION]

QMAKESPEC

qmake 需要一个平台和编译器描述文件,其中包含许多用于生成适当 Makefile 的默认值。标准 Qt 发行版附带了许多此类文件,它们位于 Qt 安装的mkspecs 子目录中。

QMAKESPEC 环境变量可包含以下任何内容:

  • 包含qmake.conf 文件的目录的完整路径。在这种情况下,qmake 将从该目录中打开qmake.conf 文件。如果文件不存在,qmake 会出错退出。
  • 平台-编译器组合的名称。在这种情况下,qmake 将在编译 Qt 时指定的数据路径的mkspecs 子目录所指定的目录中搜索 (参见QLibraryInfo::DataPath)。

注意: QMAKESPEC 路径将自动添加到生成的 Makefile 中INCLUDEPATH系统变量的内容之后。

缓存文件

缓存文件是 qmake 读取的一个特殊文件,用于查找qmake.conf 文件、项目文件或命令行中没有指定的设置。运行 qmake 时,它会在当前目录的父目录中查找名为.qmake.cache 的文件,除非你指定了-nocache 。如果 qmake 找不到这个文件,它将默默地忽略这一步的处理。

如果 qmake 找到了.qmake.cache 文件,它会先处理该文件,然后再处理项目文件。

文件扩展名

在正常情况下,qmake 会尽量为你的平台使用适当的文件扩展名。不过,有时需要覆盖每个平台的默认选择,并明确定义文件扩展名供 qmake 使用。这可以通过重新定义某些内置变量来实现。例如,可在项目文件中通过以下赋值来重新定义moc文件的扩展名:

QMAKE_EXT_MOC = .mymoc

以下变量可用于重新定义 qmake 识别的常用文件扩展名:

上述所有变量都只接受第一个值,因此您必须为它指定一个在整个项目文件中都将使用的值。有两个变量接受一个值列表:

  • QMAKE_EXT_CPP使 qmake 将所有带有这些后缀的文件解释为 C++ 源文件。
  • QMAKE_EXT_H会使 qmake 将所有带有这些后缀的文件解释为 C 和 C++ 头文件。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.