不知道从什么时候开发Qt有提供了windeployqt.exe工具,可以直接把qt应用相关的库提取出来。windeployqt.exe的路径在"<Qt安装目录>/bin"下面,为方便使用可以加入到系统环境变量中。需要先以Release方式编译应用,再新建一个目录,把应用binary放在目录下,然后再执行windeployqt.exe工具,如下:
windeployqt.exe helloworl.exe
执行成功后,会在当前目录下出现一些dll文件和目录:
iconengines/
imageformats/
platforms/
translations/
D3Dcompiler_47.dll
libEGL.dll
libGLESV2.dll
opengl32sw.dll
Qt5Core.dll
Qt5Gui.dll
Qt5SerialPort.dll
Qt5Svg.dll
Qt5Widgets.sll
helloworld.exe
目录有35MB左右,可以直接打包7z来分发使用。当然有需要也可以打包成单exe文件或再加壳压缩。
打包完后在其它PC运行发现还是缺少一些库文件,如libgcc_s_dw2-1.dll, libwinpthread-1.dll。查了查是因为我使用的是mingw工具链的原因。顺便想起现在很多语言的项目管理工具都是自动解决依赖的功能,Qt要加油了。