本页内容

QML 的 CMake 集成

Qt 为构建 Qml 模块和应用程序提供了全面的 CMake 集成。

核心 CMake 命令

qt_add_qml_module

qt_add_qml_module命令是 CMake 中创建 QML 模块的主要功能。它负责处理 QML 类型的注册、资源嵌入、插件创建以及与 Qt 构建系统的集成,提供了一种声明式方法来定义 QML 模块的所有方面。

qt_target_qml_sources

qt_target_qml_sources命令用于将 QML 文件和资源添加到现有的 QML 模块目标中。这对于组织大型模块或根据构建配置有条件地包含 QML 文件非常有用。

qt_add_qml_plugin

qt_add_qml_plugin命令用于创建可由 QML 引擎动态加载的 QML 插件库。虽然qt_add_qml_module 通常会自动处理插件的创建,但该函数可在需要时提供更底层的控制。

部署命令

qt_deploy_qml_imports

qt_deploy_qml_imports命令会识别并部署应用程序使用的所有 QML 导入项,包括其依赖项。这可确保所有必要的 QML 模块和插件都随应用程序打包。

qt_generate_deploy_qml_app_script

qt_generate_deploy_qml_app_script命令会生成一个特定于平台的部署脚本,该脚本负责将 QML 模块、插件及其他资源复制到应用程序包或安装目录中的正确位置。

qt_import_qml_plugins

qt_import_qml_plugins命令可确保 QML 插件被正确链接到静态构建的应用程序中,并生成必要的初始化代码以将插件注册到 QML 引擎中。

高级命令

qt_generate_foreign_qml_types

qt_generate_foreign_Qml_types命令为在其他库或模块中定义的 C++ 类型创建 QML 类型注册。这使您能够将第三方或 Qt 类型暴露给 QML,而无需修改其源代码。

qt_query_qml_module

qt_query_qml_module命令用于检索有关 QML 模块的信息,例如其 URI、版本、插件目标以及类型信息文件的路径。这对于构建系统的内省和工具集成非常有用。

qt_target_compile_qml_to_cpp

qt_target_compile_qml_to_cpp命令支持使用qmltc(QML 类型编译器)将 QML 文件编译为 C++。对于静态已知的 QML 类型,这为基于组件的实例化提供了一种替代方案,并能提升性能。

qt_add_qml_preview

qt_add_qml_preview命令为可执行目标配置qmlpreview实时重载支持,该目标从一个或多个qt_add_qml_module目标加载 QML,但本身并非 QML 模块。 它会创建一个额外的<target>_qmlpreview 构建目标,可用于预览可执行文件的QML文件。

CMake 变量和属性

Qt Qml 提供了若干 CMake 变量和属性,用于配置 QML 模块的行为:

全局变量

Qt6 Qml 中的 CMake 全局变量控制项目中所有 QML 模块的默认行为。这些变量包括输出目录、缓存文件生成以及工具集成的相关设置,允许您在项目级配置 QML 编译设置。

全局属性

Qt6 Qml 中的 CMake 全局属性会影响构建系统处理 QML 模块的方式,可用于自定义代码检查器目标的组织结构和构建时代码生成等方面。

源文件属性

Qt6 QML 中的 CMake 源文件属性允许对模块内的单个 QML 文件进行精细控制。您可以使用这些属性将文件标记为单例、将其从编译步骤中排除、指定自定义类型名称,或控制 QML 类型系统中的其他按文件行为。

目标属性

Qt6 Qml 中的 CMake 目标属性可让您微调单个目标的行为,例如将某个目标从项目范围内默认启用的行为中排除,如自动创建qmlpreview目标。

CMake 策略

Qt Qml 定义了若干 CMake 策略,用于控制向后兼容性和行为。

QML 的 CMake 策略

“QML 的 CMake 策略”页面概述了所有与 QML 相关的 CMake 策略及其对模块行为的影响。通过这些策略,您可以在保持与现有项目兼容的同时,选择启用新行为。

另请参阅 QML 模块、qt_add_qml_module 以及编写 QML 模块。

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