1.引言
QT开发完之后,如果直接把exe文件发给别人,是没法直接用的,因为会提示缺少很多库,一种方法是把这些库拷贝出来,一起发过去,但是这样不方便且文件很大,所以需要一种文件打包发布的方法。
2.环境
1)QT 5.12.3版本,QT 4.x版本不行。
2)Enigma Virtual Box
enigmaprotector.com/en/downloads.html
![e1f9769dee70d11b0ab8c494a33471c8.png](https://i-blog.csdnimg.cn/blog_migrate/6d2ce2ea96169ae7587fe4984cf39f97.jpeg)
3.具体步骤
1)打开一个QT程序,以release方式运行一次。操作如下图:
![3ea106cb6262a4b8348c44dde0a9a9ba.png](https://i-blog.csdnimg.cn/blog_migrate/4c494bf78448c99ff624f7382ed2b946.jpeg)
2)这时你的工程项目文件夹下,会生成一个关于release的文件夹,打开关于release相关的文件夹,找到该目录下release目录下的.exe程序。此时你点击是运行不成功的。因为缺少QT必要的库文件。
![bc7618fa48ec1bb57868489227b61555.png](https://i-blog.csdnimg.cn/blog_migrate/513ed28823c87fbaaabd887008b96276.jpeg)
将这个.exe文件拷贝出来,创建一个单独的文件夹,放在这个文件夹下,比如桌面的test文件夹里。
![cd5d2c9078d555c31523a4c035eeb30c.png](https://i-blog.csdnimg.cn/blog_migrate/edc91670d475eb2833d83ac48eaa0cb0.jpeg)
3)在开始菜单中,打开QT命令行窗口
![8b89dae0bd910cdf5265076c1cb91274.png](https://i-blog.csdnimg.cn/blog_migrate/01a7e2daf4b228a742e188dae9f6f245.jpeg)
![f512bebaf6d5e88100b6da4e23ffcecb.png](https://i-blog.csdnimg.cn/blog_migrate/105bec5114a844e217e2850580719c31.jpeg)
接着输入命令行,cd /d 路径(指的是需要打包的exe程序目录,就是刚才拷贝出来的exe程序所在的目录),回车
cd /d C:/Users/wangwnexue/Desktop/test
![24d978e95bf06cf6709cf14f6ac3be16.png](https://i-blog.csdnimg.cn/blog_migrate/3c5390133a8f6a01dec3f5d1057dc6a9.jpeg)
4)输入如下命令行:windeployqt 程序名 敲击回车。这一步操作是将所需的库文件全都拷贝到exe程序的当前文件:
![c4b0934a805b632ec33498e47dccd623.png](https://i-blog.csdnimg.cn/blog_migrate/fb6d7aca94e684ca09f12ab4bd539fa1.jpeg)
![84690c717c6bbbf309c759615784bab4.png](https://i-blog.csdnimg.cn/blog_migrate/573f5c706f99c2fd17c183d5f160582e.jpeg)
此时,在当前目录下是可以点击运行exe程序的,说明库文件都已经拷贝到当前目录下了。这时就可以执行将这一堆文件进行打包的操作了,需要使用Enigma Virtual Box工具。
5)打开运行Enigma Virtual Box
第一步选择上述的exe文件
![2947fb888bf43aa2f9c1253c38d30c1f.png](https://i-blog.csdnimg.cn/blog_migrate/1cf59db7a23655feba9a9ed2acd10d70.jpeg)
第二步:添加路径和文件如下图。选择所有文件后,注意是要所有文件和文件夹全部拖进。示意图如下:
![09794dc95314fabf39f426a8cf1d1e3a.png](https://i-blog.csdnimg.cn/blog_migrate/77e6696a44630130cae3d300bd454db6.jpeg)
![aee1cc4875eaceaa2fcbee711cb4378b.png](https://i-blog.csdnimg.cn/blog_migrate/3b4034ae4800a0529045143c46ef8ecc.jpeg)
结果如下:
![fe9019561805ba56a2586d588e901e46.png](https://i-blog.csdnimg.cn/blog_migrate/3b1f11ac6ab9f2da2abaf4c791174240.jpeg)
第3步:点击在【Files Options】中可以选择是否将文件压缩:
![c1313b308ab8de68cfc7893b75596b19.png](https://i-blog.csdnimg.cn/blog_migrate/85ff08ad508a4c4ac7e92d62e72bcc29.jpeg)
第4步:最后点击Process开始打包
![45eebdb0c88000405c01946573e14669.png](https://i-blog.csdnimg.cn/blog_migrate/ee970fbc1fcb9d812eb2dd948f5c8391.jpeg)
![f914a91c4a01e4eac019c4076293501f.png](https://i-blog.csdnimg.cn/blog_migrate/2a8d0057207a65f9a007a8403ac203eb.jpeg)
生成testweb_boxed.exe就可以直接打开使用了。
4.问题总结
在实际操作过程中遇到了以下几个问题
1) 提示windeployqt不是内部或外部命令
![09839540e6d07fe2f8344e339f00aece.png](https://i-blog.csdnimg.cn/blog_migrate/435b614fc1018656c25b8b243d912799.jpeg)
原因是:一开始我电脑里用的不是QT5.x版本,所以它是没有的,装了新版本的就有了。
2) 提示FaceImport.exe does not seem to be a Qt executable.
原因是:我装了QT最新版本,但是编译器用的还是老版本,需要改成最新的,就可以了。
![07e9577e669b0766c5f920fb476365ad.png](https://i-blog.csdnimg.cn/blog_migrate/bd2996888fba9d9baa11104d244493d4.jpeg)