CMake 变量参考

Qt 编译变量

编译 Qt 时,您可以使用 CMake 变量来控制编译结果。

变量说明
QT_HOST_PATHQt 安装主机的 Location,在另一次 Qt 联编(常规联编或交叉编译)时可使用主机工具。
QT_FORCE_BUILD_TOOLS即使已找到主机工具,也会强制构建工具。这在交叉编译 Qt 时非常有用,可确保 SDK 具有交叉构建的工具。
QT_FORCE_FIND_TOOLS不交叉编译时,使用QT_HOST_PATH 中预置的 Qt 工具。只有当QT_FORCE_BUILD_TOOLS 设置为ON 时,该变量才会生效。否则,QT_FORCE_FIND_TOOLS 不会影响默认行为。

模块变量

通过find_package 加载的 Qt 模块会设置各种变量。

注意: 您很少需要直接访问这些变量。链接模块等常见任务应通过每个模块定义的库目标来完成。

例如,find_package(Qt6 COMPONENTS Widgets) ,成功后将提供以下变量:

变量说明
Qt6Widgets_COMPILE_DEFINITIONS针对库构建时使用的编译定义列表。
Qt6Widgets_DEFINITIONS针对程序库编译时使用的定义列表。
Qt6Widgets_EXECUTABLE_COMPILE_FLAGS根据程序库构建可执行文件时使用的标志字符串。
Qt6Widgets_FOUND描述是否成功找到模块的布尔值。
Qt6Widgets_INCLUDE_DIRS针对程序库构建时使用的包含目录列表。
Qt6Widgets_LIBRARIES模块的导入目标名称:Qt6::Widgets
Qt6Widgets_PRIVATE_INCLUDE_DIRS根据库构建并使用私有 Qt API 时使用的私有 include 目录列表。
Qt6Widgets_VERSION包含模块版本的字符串。

对于所有通过find_package 找到的软件包,这些变量的对应变量都可用;它们区分大小写。

安装变量

此外,还有一些变量与特定软件包无关,但与 Qt 安装本身有关。

变量描述

QT_DEFAULT_MAJOR_VERSION

一个整数,用于控制qt_ 命令在 Qt 5 和 Qt 6 混合项目中转发的 Qt 版本。需要在调用相应的find_package() 之前将其设置为56

如果设置为5 ,则从qt_ 开始的命令将调用从qt5_ 开始的对应命令。如果设置为6 ,则从qt6_ 开始的命令将调用对应命令。

如果未设置,则第一个find_package 调用将定义默认版本。

QT_LIBINFIX一个字符串,当 Qt 配置为-libinfix 时,该字符串用于保存库名的后缀。

QT_NO_CREATE_VERSIONLESS_FUNCTIONS

隐藏以qt_ 开头的命令,只保留以qt6_ 开头的版本控制命令。

QT_NO_CREATE_VERSIONLESS_TARGETS

隐藏以Qt:: 开头的导入目标。您需要使用以Qt6:: 开头的目标。
QT_VISIBILITY_AVAILABLE在 Unix 上,描述 Qt 库和插件是否使用-fvisibility=hidden 编译的布尔值。这意味着只导出选定的符号。

项目变量

这些变量可影响 Qt 提供的 CMake 命令。它们可以由项目、工具链文件或其他第三方软件包设置。

Qt6::Core

ANDROID_NDK_HOST_SYSTEM_NAME

主机系统的 Android 特定架构

ANDROID_SDK_ROOT

Android SDK 的位置

QT_ANDROID_ABIS

项目软件包所针对的 ABI 列表

QT_ANDROID_APPLICATION_ARGUMENTS

要传递给 Android 应用程序的参数列表

QT_ANDROID_BUILD_ALL_ABIS

启用使用自动检测到的 Qt for Android SDK 列表构建多 ABI 软件包

QT_ANDROID_DEPLOYMENT_TYPE

无论构建类型如何,都可强制或禁用发布包签名

QT_ANDROID_GENERATE_JAVA_QTQUICKVIEW_CONTENTS

支持生成基于 QtQuickViewContent 的类

QT_ANDROID_MULTI_ABI_FORWARD_VARS

允许在多ABI 构建中共享 CMake 变量

QT_ANDROID_SIGN_AAB

使用指定的密钥存储、别名和存储密码签署 .aab 软件包

QT_ANDROID_SIGN_APK

使用指定的密钥存储、别名和存储密码签署软件包

QT_DEPLOY_BIN_DIR

用于在某些目标平台上部署运行时二进制文件的前缀相关子目录

QT_DEPLOY_IGNORED_LIB_DIRS

从运行时依赖关系搜索中排除的目录

QT_DEPLOY_LIBEXEC_DIR

用于在某些目标平台上部署程序可执行文件的前缀相关子目录

QT_DEPLOY_LIB_DIR

用于在某些目标平台上部署程序库的前缀相关子目录

QT_DEPLOY_PLUGINS_DIR

用于在某些目标平台上部署 Qt 插件的前缀相关子目录

QT_DEPLOY_PREFIX

部署的基本位置

QT_DEPLOY_QML_DIR

用于在某些目标平台上部署 QML 插件的前缀相关子目录

QT_DEPLOY_SUPPORT

为设置部署支持而包含的文件名

QT_DEPLOY_TRANSLATIONS_DIR

用于在某些目标平台上部署 Qt 翻译的前缀相关子目录

QT_ENABLE_VERBOSE_DEPLOYMENT

启用部署工具的详细说明模式

QT_HOST_PATH

交叉编译时主机 Qt 安装的位置

QT_I18N_SOURCE_LANGUAGE

指定可翻译字符串的语言

QT_I18N_TRANSLATED_LANGUAGES

用于项目国际化的语言列表

QT_IOS_LAUNCH_SCREEN

所有目标都使用的 iOS 启动屏幕故事板路径

QT_NO_COLLECT_BUILD_TREE_APK_DEPS

防止在 Android 部署期间收集项目构建的共享库目标

QT_NO_COLLECT_IMPORTED_TARGET_APK_DEPS

防止在 Android 部署期间收集导入的目标

QT_NO_SET_XCODE_BUNDLE_IDENTIFIER

禁止在 iOS 目标最终确定期间提供后备应用程序捆绑包 ID

QT_NO_SET_XCODE_DEVELOPMENT_TEAM_ID

禁止在 iOS 上的目标最终确定过程中提供后备团队 ID

QT_NO_STANDARD_PROJECT_SETUP

防止后续调用 qt_standard_project_setup() 进行任何更改

QT_PATH_ANDROID_ABI_<ABI>

一组变量,用于指定相应 ABI 的 Qt for Android 路径

QT_USE_TARGET_ANDROID_BUILD_DIR

启用每个目标的 Android 构建目录

Qt6::InterfaceFramework

IFCODEGEN_VERBOSE

为所有 ifcodegen 函数启用详细日志记录功能

QT_IFCODEGEN_TEMPLATE_SEARCH_PATH

搜索 ifcodegen 模板的路径

Qt6::Multimedia

QT_NO_FFMPEG_XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY

在 iOS 上禁用 FFmpeg 代码签名

Qt6::Qml

QT_QML_GENERATE_AOTSTATS

控制是否启用 QML 编译器统计数据收集功能

QT_QML_GENERATE_QMLLS_INI

启用自动生成 .qmlls.ini 文件,用于QML Language Server

QT_QML_NO_CACHEGEN

禁止将 QML 文件编译成字节码或 C++ 代码

QT_QML_OUTPUT_DIRECTORY

基本输出目录,默认在该目录下创建 QML 模块

标准 CMake 变量

cmake_autogen_better_graph_multi_config改进多配置生成器的依赖关系图

© 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.