部署

使用 Qt 的 CMake 部署 API 部署桌面平台的 Qt 项目。该 API 支持多种目标平台,您可以在 qt_generate_deploy_app_script() 文档中找到。

部署过程取决于您的项目是 Qt Widgets 应用程序还是 Qt Quick 应用程序。即使您只打算部署 Qt Quick 应用程序,也请先了解如何部署 Qt Widgets 应用程序,以了解相关流程。

部署 Qt Widgets 应用程序

本节通过一个简单的 C++ Qt 项目的示例,展示了如何部署 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 --install .ninja install 与任何基于 CMake 的项目一样安装项目。安装完成后,安装目录包含运行应用程序所需的共享库和资源。换句话说,安装生成的目录是独立自包含的,可以打包——例如使用 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 这样的工具进行打包。

© 2024 Qt 公司。此处包含的文档贡献属于其各自所有者的版权。所述文档的使用受 GNU 自由文档许可协议第1.3版 的许可,如自由软件基金会发布。Qt 及相关商标为芬兰的 Qt 公司及其在全球的分公司和附属机构的商标。所有其他商标均为其各自所有者的财产。