本页内容

CMake 变量参考

Qt 构建变量

在构建 Qt 时,您可以使用 CMake 变量来控制构建结果。

变量描述
QT_HOST_PATH主机 Qt 安装的位置,在其他 Qt 构建(无论是常规构建还是交叉编译)过程中,可从此处使用主机工具。
QT_FORCE_BUILD_TOOLS强制使用构建工具,即使已找到主机工具。在对 Qt 进行交叉编译时,此变量可确保 SDK 包含交叉构建的工具。
QT_FORCE_FIND_TOOLS在不进行交叉编译时,使用QT_HOST_PATH 中预编译的Qt中的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 时需使用的私有包含目录列表。
Qt6Widgets_VERSION包含模块版本号的字符串。

对于通过 `find_package` 找到的所有软件包,均可使用这些变量的等效项;它们区分大小写。

安装变量

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

变量描述

QT_DEFAULT_MAJOR_VERSION

一个整数,用于控制在 Qt 5 和 Qt 6 项目混合使用的情况下,qt_ 命令转发的 Qt 版本。在调用相应的find_package() 之前,必须将其设置为5 或6 。

如果设置为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_CREATE_SYMLINKS_ONLY

仅在 Gradle 项目目录下为依赖项创建符号链接

QT_ANDROID_DEPLOYMENT_TYPE

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

QT_ANDROID_GENERATE_JAVA_QTQUICKVIEW_CONTENTS

启用基于 QtQuickViewContent 的类生成

QT_ANDROID_GRADLE_MULTI_MODULE

从多模块 Gradle 项目构建 Android 包

QT_ANDROID_MULTI_ABI_FORWARD_VARS

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

QT_ANDROID_POST_BUILD_GRADLE_CLEANUP

在 Android 包生成后执行 Gradle 清理

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_QMLLINT_CONTEXT_PROPERTY_DUMP

启用在 lint 目标中转储上下文属性

QT_QML_GENERATE_AOTSTATS

控制是否启用 QML 编译器的统计信息收集

QT_QML_GENERATE_QMLLS_INI

启用为以下内容自动生成 .qmlls.ini 文件QML Language Server

QT_QML_GENERATE_QMLLS_INI_NO_CMAKE_CALLS

自定义 .qmlls.ini 文件中 no-cmake-calls 的值,用于QML Language Server

QT_QML_NO_CACHEGEN

禁用将 QML 文件编译为字节码或 C++ 代码的功能

QT_QML_NO_QML_PREVIEW (global property)

控制是否为链接 Qt6::Qml 的可执行文件自动配置 qmlpreview 支持

QT_QML_OUTPUT_DIRECTORY

默认用于创建 QML 模块的基目录

标准 CMake 变量

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

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