玩qt5也有一段时间了,惭愧的是一直没有好好的发布过程序,由于写的都是小程序没啥须要用到发布,并且qt也说不上很熟悉,原本打算到基本掌握qt以后再来研究研究怎么打包程序,最近晚上的空闲时间多了,闲着也是闲着,因而便来试试。html
在网上搜索了一下资料,发现资料比较少,qt5打包的也只看见几篇博文,也不是很详细,因此当我成功的打包了个人第一个程序以后内心想着的就是必定要把经验共享出来,这方法不必定是最好的,并且可能也还存在不少问题,这都有待我之后慢慢挖掘,也望你们多多指点,共同进步。
打包:
(1)首先程序要想发布,在编译器编译必定要选择“release”而不是“debug”,编译成release版本;
(2)编译成release以后,找到目录:
其实若是直接在这里双击“chat.exe”也是会提示缺乏的dll文件,而后在qt的安装目录找对应的dll文件,将dll复制到该目录便可,dll在下面的路径:(VS版本可能有点不同,不过都是bin目录下的)

可是这样我试过不少次,即便提示的dll都复制进来了,双击也能够运行了,但是放到其余电脑仍是没法运行,这是由于依旧缺乏文件,如plugins下的一些插件,所以这样仍是没法打包成功的。
因而为了更加方便快捷的解决这个问题,咱们使用qt自带的windeployqt.exe寻找依赖的文件,咱们使用批处理bat,在当前目录(即编译成release后的可执行程序所在目录)新建个bat文件:
使用记事本打开或者其余编辑工具亦可,而后把下面的代码复制进去保存;
若是使用的msvc版本的:
C:\Qt\Qt5.4.2\5.4\msvc2013_64\bin\windeployqt.exe myexe.exe
pause
若是使用的是mingw版本的:
C:\QT5\5.5\mingw492_32\bin\windeployqt.exe myexe.exe
pause
代码解析:C:\Qt\Qt5.4.2\5.4\msvc2013_64\bin\windeployqt.exe这个是windeployqt.exe工具的路径,要根据本身的qt安装状况进行修改,首先在这里看能不能找到windeployqt.exe,找到了直接把其路径复制过来便可;myexe.exe则是你的可执行程序的名称,不要照抄这里的。
(3)上面步骤完成以后直接双击这个bat文件就会把须要用到的全部dll文件自动复制到当前目录下:
很便捷。
这个时候再去双击你的可执行程序应该就能够运行了。
(4)接着就须要把这些文件打包成一个exe文件了,咱们能够用Enigma Virtual Box这款软件, 如今最新的版本已是7.4了,百度一搜索就有,而后就开始添加文件打包了:


最后点击“执行封包”就能生成一个exe文件,如图示:
因而这个打包好的程序就能够放到其余电脑上运行啦。小程序
(5)若是有须要制做成安装包程序可使用Inno setup这款软件制做安装包,固然网上还有不少其余相似的,就须要你们本身去尝试啦,制做安装包的方法也是相似的,准备所须要的文件以后添加进去就能够了,网上不少这样的教程,你们参考这篇博文:http://blog.csdn.net/ruifangcui7758/article/details/6662646。
总结,我测试过不少次打包成exe在其余电脑上运行都是没有问题的,可是在群里跟他人讨论的时候他们说在某些状况仍是会遇到问题,好比用到OpenGL库,一些第三方库如opencv等这样打包运行时就会出问题,我估计是 qt自带的windeployqt.exe这款工具备些库仍是找不到的,尤为是外部的库,也就是说仍是有必定的局限性,固然这只是个人猜想,我如今还没遇到,等遇到这种状况的时候我会再去寻找解决方法的,到时会继续更新这篇博文。