QT应用在Windows下部署发布

刚接触QT,对于其在Windows下部署一头雾水。网上相应的资料很多都是手工程度比较高的,在这里我们可以使用QT自带的发布工具 - windeployqt.exe

部署发布 - 解决依赖

该文件在QT的安装目录下,我Windows平台使用的mingw版本(5.8),其路径为

D:\Qt\Qt5.8.0\5.8\mingw53_32\bin\windeployqt.exe

使用Release模式编译程序,然后将对应的exe文件和你自己编写的dll文件复制到一个单独的目录中(假设目录为HelloQT,文件为helloqt.exe)

然后在cmd下进入该目录,执行以下命令即可

D:\Qt\Qt5.8.0\5.8\mingw53_32\bin\windeployqt.exe helloqt.exe

该命令会在helloqt.exe目录目录下生成(应该是复制)其所需要的依赖项。

如果你是基于msvc编译的qt应用,那么此时已经可以运行起来了。
但是基于mingw编译的qt应用,此时还有3个依赖项没有自动复制过来,依次是
- libgcc_s_dw2-1.dll
- libstdc++-6.dll
- libwinpthread-1.dll
这些文件你都可以在目录D:\Qt\Qt5.8.0\Tools\mingw530_32\i686-w64-mingw32\lib下找到。

部署发布 - 打包压缩

经过上面的步骤,虽然依赖解决了,但是有两个问题

  • 依赖项目非常多
  • 文件总体积很大(一个helloworld应用大概会有40+M)

我们可以采取以下措施来解决或者优化上面出现的问题

  • 删除掉不用的DLL文件(我目前对这些不太熟…)
  • 用strip命令去掉程序里面一些无用信息
  • 使用打包/加壳工具进行打包压缩
    • Enigma Virtual Box
    • ASPack
    • UPX
    • Flexera (InstallShield安装包制作工具)
  • 其它优化手段…

待实践

参考

  1. 如何在Windows下发布QT应用程序
  2. Qt5应用程序的部署
  3. Qt 5.x 应用程序 Windows 部署方法
  4. QT程序在windows下部署发布
  5. Application failed to start because it could not find or load the QT platform plugin “windows”
  6. Qt for Windows - Deployment
  7. Deploy an Application on Windows
阅读更多

更多精彩内容