部署
使用 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 公司及其在全球的分公司和附属机构的商标。所有其他商标均为其各自所有者的财产。