本页内容

部署

使用 Qt 的 CMake 部署 API 来为桌面平台部署 Qt 项目。该 API 支持多种目标平台,具体信息请参阅qt_generate_deploy_app_script()的文档。

部署流程取决于您的项目是Qt Widgets 应用程序还是Qt Quick 应用程序。即使您计划仅部署Qt Quick 应用程序,也请先阅读关于部署Qt Widgets 应用程序的内容,以了解相关流程。

部署Qt Widgets 应用程序

本节通过一个简单的 C++ Qt XML 项目示例,介绍如何部署Qt Widgets 应用程序。

cmake_minimum_required(VERSION 3.16)

project(MyApp VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt6 REQUIRED COMPONENTS Core)
qt_standard_project_setup()

qt_add_executable(MyApp main.cpp)
target_link_libraries(MyApp PRIVATE Qt6::Core)

您需要指示 CMake 将应用程序目标安装到适当的位置。在 macOS 上,应用程序包会直接安装到${CMAKE_INSTALL_PREFIX} 目录中;在其他平台上,则安装到其下方的"bin" 目录中。

install(TARGETS MyApp
    BUNDLE  DESTINATION .
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

请注意,qt_standard_project_setup()会引入 CMake 的GNUInstallDirs.cmake 。正是它定义了CMAKE_INSTALL_BINDIR 变量。

您还需要生成一个部署脚本。部署脚本是在安装时执行的 CMake 代码。该代码负责收集运行时依赖项,并将其复制到安装目录中。

qt_generate_deploy_app_script(
    TARGET MyApp
    OUTPUT_SCRIPT deploy_script
    NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})

qt_generate_deploy_app_script()命令会在构建目录中生成部署脚本。生成的脚本文件名存储在deploy_script 变量中。install(SCRIPT) 的调用会指示 CMake 在安装时运行该脚本。

该项目可像其他基于 CMake 的项目一样,通过cmake --install . 或ninja install 进行安装。安装完成后,安装目录中将包含运行应用程序所需的共享库和资源。换言之,安装过程会生成一个自包含的目录,可直接进行打包——例如通过cpack 命令。

部署Qt Quick 应用程序

部署Qt Quick 项目需要使用不同的命令来生成部署脚本。其余步骤与部署Qt Widgets 应用程序类似。

首先,创建Qt Quick 应用程序。

cmake_minimum_required(VERSION 3.16)

project(MyApp VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt6 REQUIRED COMPONENTS Core)
qt_standard_project_setup()

qt_add_executable(MyApp main.cpp)
qt_add_qml_module(MyApp
    URI Application
    VERSION 1.0
    QML_FILES main.qml MyThing.qml
)

按照之前的方法安装应用程序。

install(TARGETS MyApp
    BUNDLE  DESTINATION .
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

要生成部署脚本,请调用qt_generate_deploy_qml_app_script()而不是qt_generate_deploy_app_script()。

qt_generate_deploy_qml_app_script(
    TARGET MyApp
    OUTPUT_SCRIPT deploy_script
)
install(SCRIPT ${deploy_script})

安装时,将部署应用程序二进制文件,其中包括 QML 文件以及项目所使用的 Qt 共享库和资源。同样,生成的目录是自包含的,可以使用cpack 等工具进行打包。

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