包虫病

首页 » 常识 » 问答 » 使用CMake部署Qt应用程序
TUhjnbcbe - 2021/1/20 2:56:00
白癜风能根治么         http://pf.39.net/bdfyy/zjdy/190516/7143439.html

Qt应用程序在运行时依赖于动态链接库以及资源文件,在调试和生成Qt安装包时都需要进行处理,否则经常出现本地运行可以,而在客户电脑上不行的场景.

这时,保持开发者本地环境和真实运行环境一致是比较好的实践.即:

开发者环境不配置Qt相关环境变量;

不使用专门的IDE及插件(例如QtVisualStudioTools).

这种情况下CMake是比较好的选择,这时就需要解决调试时部署Qt运行时的问题:

依赖的Qt动态链接库依赖的Qt插件Qt翻译文件Qml等资源

好在Qt在Windows上提供了windeployqt来帮助开发者.那么如何整合到CMakeLists中呢?

工程构建结果的部署

工程构建结果包含构造出来的exe、dll、qm以及其它资源文件.CMake默认会配置exe、dll等内容的输出目录,而资源文件是需要开发者自行处理的.这里也分两种场景来处理:

调整运行时输出位置

在CMake中exe、dll等被成为运行时(runtime),通过指定CMAKE_RUNTIME_OUTPUT_DIRECTORY可以调整其输出位置,假设要根据不同的配置(Debug、Release等)输出到构建目录,则在工程的主CMakeLists.txt中通过这种方式定义:

if(NOTDEFINEDCMAKE_RUNTIME_OUTPUT_DIRECTORY)set(CMAKE_RUNTIME_OUTPUT_DIRECTORY"${CMAKE_BINARY_DIR}/$CONFIG")endif()拷贝资源到输出位置

要执行这一操作,首先要获取输出位置,假设你为库或者应用程序定义的target名称为TARGET_NAME,通过如下指令可以获取输出位置:

$TARGET_FILE_DIR:TARGET_NAME

qm文件的路径存储在TARGET_NAME_QM_FILE变量中,那么可以以如下命令完成目录创建、翻译文件拷贝动作:

##复制资源文件add_custom_

1
查看完整版本: 使用CMake部署Qt应用程序