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. 在芬兰和其他国家/地区的商标。所有其他商标属于其各自的所有者。