Qt程序打包,没有想象中那么复杂。
发现问题
在使用 Qt C++ 发布生成 *.exe
时,需要复制大量 dll
动态链接库文件,这一点相信每一个 Qt 开发者都经历过。除了手动复制,能不能有一种更优雅的解决方案呢?
问题调研
在当前的主流语言中,打包方式可谓是大道至简。使用 C++ 时,你可以通过 Visual Studio 自带的打包插件完成打包;使用 Python 时,你可以借助 PyInstaller 这样的打包工具执行命令完成打包; 使用 Golang 时,你可以借助它自带的打包工具执行命令完成打包…
Qt 官方为了解决这一问题,早就在 Qt 安装时内置一个一键打包程序 —— wideployqt.exe
。
解决方案
windeployqt.exe 使用教程
1. 准备文件
- 一个 release 模式下编译好的 exe;
- 其他非系统库;
- exe 启动时读取的目录或文件等。
准备好上述文件后,将它们拷贝至一个新建的文件夹中,文件夹路径和命名不能包含中文。
2. 启动 Qt 对应编译器的控制台程序
我使用的 MinGW 5.3.0 , 故选择图中这个控制台程序。
3.在控制台打开编译好的 exe 所在路径
4. 输入打包命令开始打包
打开对应路径后,输入下方的打包命令,即可开始打包。
1 | windeployqt [exe文件名] |
稍等片刻,打开文件夹你会看到,所有的 dll 库已经拷贝完成了,我们可以打开 exe 试一试打包是否成功。
参考链接
[1] 新浪博客 - Qt之打包发布(NSIS详解)
[2] CSDN - 教你使用windeployqt工具来进行Qt的打包发布