qt_generate_deploy_app_script
为应用程序生成部署脚本。
此命令在《Qt6》包的《核心》组件中定义,可以按照如下方式加载
find_package(Qt6 REQUIRED COMPONENTS Core)
此命令首次在Qt 6.3中引入。
注意:此命令目前仅支持Windows、macOS和Linux。
概要
qt_generate_deploy_app_script( TARGET target OUTPUT_SCRIPT <var> [NO_TRANSLATIONS] [NO_COMPILER_RUNTIME] [NO_UNSUPPORTED_PLATFORM_ERROR] [DEPLOY_TOOL_OPTIONS ...] [PRE_INCLUDE_REGEXES regexes...] [PRE_EXCLUDE_REGEXES regexes...] [POST_INCLUDE_REGEXES regexes...] [POST_EXCLUDE_REGEXES regexes...] [POST_INCLUDE_FILES files...] [POST_EXCLUDE_FILES files...] )
如果禁用了无版本命令,则使用qt6_generate_deploy_app_script()
代替。它支持与该命令相同的参数集。
说明
使用install(TARGETS)
安装可执行目标目标仅安装目标的可执行文件(macOS应用程序捆绑包除外,它将复制整个捆绑包)。您需要自己明确安装可执行文件依赖的其他库或插件。qt_generate_deploy_app_script()
是一个便捷命令,旨在简化此过程。它期望应用跟随Qt推荐安装目录结构相当紧密。这个结构基于CMake的默认安装布局,由GNUInstallDirs决定(macOS应用程序捆绑包除外,它遵循Apple的规范)。
命令将生成一个名为OUTPUT_SCRIPT
选项所命名的变量的脚本。该脚本仅在CMake生成时写入。它打算与install(SCRIPT)命令一起使用,该命令应该在install(TARGETS)安装应用目标之后使用。
部署脚本将调用具有标准安装布局适当选项的qt_deploy_runtime_dependencies()。目前,这仅实现了以下内容
- 基于macOS的主机构建的macOS应用程序捆绑包,
- 基于Linux的主机构建的Linux可执行文件,
- 以及基于Windows的主机构建的Windows可执行文件。
在Linux主机上构建Windows可执行文件以及类似场景目前不支持。除非提供了NO_UNSUPPORTED_PLATFORM_ERROR
选项,否则调用此情况下的qt_generate_deploy_app_script()
将导致致命错误。
除macOS平台以外的平台,Qt翻译将自动部署。要禁止此行为,指定NO_TRANSLATIONS
。使用qt_deploy_translations()以定制方式部署翻译。
对于Windows桌面应用程序,编译器所需的运行时文件也默认安装。要防止此行为,指定NO_COMPILER_RUNTIME
。
从Qt 6.7开始,可以使用DEPLOY_TOOL_OPTIONS
将其他选项传递给底层部署工具。这仅在底层部署工具是macdeployqt或windeployqt时才有作用。
要部署一个 QML 应用,使用 qt_generate_deploy_qml_app_script()。
要生成自定义部署脚本,使用 qt_generate_deploy_script。
可以使用选项 PRE_INCLUDE_REGEXES
、PRE_EXCLUDE_REGEXES
、POST_INCLUDE_REGEXES
、POST_EXCLUDE_REGEXES
、POST_INCLUDE_FILES
和 POST_EXCLUDE_FILES
来控制运行时依赖的部署。这些选项不适用于所有平台,将在未经修改的情况下转发到 qt_deploy_runtime_dependencies()。
示例
以下示例展示了如何部署 MyApp
应用。
cmake_minimum_required(VERSION 3.16...3.22) project(MyThings) find_package(Qt6 REQUIRED COMPONENTS Core) qt_standard_project_setup() qt_add_executable(MyApp main.cpp) install(TARGETS MyApp BUNDLE DESTINATION . RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) qt_generate_deploy_app_script( TARGET MyApp OUTPUT_SCRIPT deploy_script NO_UNSUPPORTED_PLATFORM_ERROR ) install(SCRIPT ${deploy_script})
以下示例展示了如何使用 DEPLOY_TOOL_OPTIONS
参数将不同的选项传递给 macdeployqt 和 windeployqt。
set(deploy_tool_options_arg "") if(APPLE) set(deploy_tool_options_arg --hardened-runtime) elseif(WIN32) set(deploy_tool_options_arg --no-compiler-runtime) endif() qt_generate_deploy_app_script( TARGET MyApp OUTPUT_SCRIPT deploy_script NO_UNSUPPORTED_PLATFORM_ERROR DEPLOY_TOOL_OPTIONS ${deploy_tool_options_arg} ) install(SCRIPT ${deploy_script})
另请参阅 qt_standard_project_setup()、qt_generate_deploy_script() 和 qt_generate_deploy_qml_app_script()。
© 2024 The Qt Company Ltd. 包含在内的文档贡献的版权属于各自的拥有者。此处提供的文档受 GNU Free Documentation License 版本 1.3 许可,由 Free Software Foundation 发布。Qt 及相关标志为 The Qt Company Ltd. 在芬兰和其他国家/地区的商标。所有其他商标属于其各自的所有者。