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