qt_generate_deploy_app_script
为应用程序生成部署脚本。
该命令在Qt6
软件包的Core
组件中定义,可以像这样加载:
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(SCRIPT)命令应在使用install(TARGETS) 安装完应用程序的目标后才发出。
部署脚本将调用qt_deploy_runtime_dependencies(),并为标准安装布局提供一组合适的选项。目前,这只针对
- 在 macOS 主机上构建的 macOS 应用程序捆绑包、
- 在 Linux 主机上构建的 Linux 可执行文件、
- 和 Windows 主机上的 Windows 可执行文件。
目前还不支持在 Linux 主机上交叉构建 Windows 可执行文件以及类似情况。在这种情况下调用qt_generate_deploy_app_script()
会导致致命错误,除非给出NO_UNSUPPORTED_PLATFORM_ERROR
选项。
在 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()。
© 2025 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.