本页内容

qt_generate_deploy_script

生成自定义部署脚本。

该命令定义在Qt6 包的Core 组件中,可按如下方式加载:

find_package(Qt6 REQUIRED COMPONENTS Core)

该命令于 Qt 6.5 版本中引入。

语法

qt_generate_deploy_script(
    OUTPUT_SCRIPT <var>
    [TARGET target]
    [NAME script_name]
    [CONTENT content]
)

如果禁用了无版本号的命令,请改用 `qt6_generate_deploy_script() `。它支持与本命令相同的参数集。

描述

该命令会生成一个脚本,其完整文件路径将存储在由OUTPUT_SCRIPT 选项指定的变量中。该脚本仅在CMake生成时写入。它旨在与install(SCRIPT)命令配合使用,且应在通过install(TARGETS)安装应用程序目标之后执行。

该命令会自动生成一个适合多配置生成器的文件名。会添加必要的包含文件,以便访问 Qt 的 CMake 部署函数和变量。

TARGET 参数指定了将由该脚本部署的目标。除非指定了NAME ,否则这会影响生成的脚本文件名。

NAME 参数控制部署脚本自动生成名称中可识别的部分。若未提供NAME 或TARGET ,则NAME 参数默认为custom 。

CONTENT 参数指定写入部署脚本的代码。内容中可包含生成器表达式。

注意:当 使用无版本号的qt_generate_deploy_script命令时 ,只有在将QTP0008设置为NEW 时,内容中的转义序列和${var} 引用才会原样保留在生成的脚本中。 采用OLD 行为时,这些内容会在调用处被求值,而参数则会被原样传递;因此,本应在脚本运行时展开的QT_DEPLOY_* 引用,反而会在配置时被展开,导致返回空值。直接调用qt6_generate_deploy_script() 可避免此问题。

该命令旨在生成直接调用 Qt 部署 API 函数的自定义部署脚本。对于复杂度较低的部署需求,使用qt_generate_deploy_app_script()或qt_generate_deploy_qml_app_script() 会更为便捷。

示例

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_script(
    TARGET MyApp
    OUTPUT_SCRIPT deploy_script
    CONTENT "
qt_deploy_runtime_dependencies(
    EXECUTABLE $<TARGET_FILE:MyApp>
)
")
install(SCRIPT ${deploy_script})

另请参阅 qt_generate_deploy_app_script()、qt_generate_deploy_qml_app_script() 以及QTP0008。

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