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