CMake 构建的 Qt 程序拷贝必要的依赖文件到执行目录


使用 Qt Creator 运行 Qt 程序时特别是在 Windows 平台下,经常会遇到因为在执行目录缺少必要的依赖文件,而出现莫名其妙的问题。
比如说无法调试,报: The CDB process terminated.
直接运行时则是直接退出,没有任何报错信息,如果知道是这个原因还好,如果不知道或者忘记了,就会很恶心,浪费很多精力,本人深受其害。于是就想到了如题的办法,来避免这个问题.

查找 Qt 程序依赖的文件

  1. Windows 平台下,可使用 Qt 官方提供的 windeployqt.exe 工具实现, 使用方法:
    D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\windeployqt.exe + <自己的 Qt 程序 exe 执行文件>
D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\windeployqt.exe E:/build-es-qt-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug\es.exe

自己的执行文件目录最好是绝对路径。

  1. Qt 官方提供的工具一般找不全,可以通过双击自己的 exe 的方法来确定还缺少哪些文件,如果缺少文件, Windows 会提示缺少什么什么库文件, 然后按需查找即可。

将找到的文件拷贝到执行目录中

将上面找到的所以依赖文件,放到自己项目的一个文件夹中,比如 3rd
CMakeLists.txt 的写法如下:

set(FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/3rd/)
message(STATUS "FILE_PATH = " ${FILE_PATH})
file(COPY ${FILE_PATH}/3rd/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

这样编译的时候,CMake 就会把程序的依赖文件拷贝到可执行目录了. 这样就能避免类似问题的发生

上面的方法,对于 Unix Macos 系统照葫芦画瓢应该也是可以的。

另外,如果程序用的 qmake 构建的按照这个思想也可以处理,只不过需要使用 qmake 提供的方法来实现.

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值