【QT】 程序安装包裁剪打包

在写完QT程序打包发布可执行文件.exe时,发现体积着实有点太大了。一个普通的串口读写软件压缩后达到58M!!!解决方案如下:(删减后的可执行程序只有8M左右)

  1. 创建一个 dist 目录
  2. 把编译好的 qttest.exe 复制到 dist 目录。
  3. 打开 cmd.exe,cd 到 dist 目录
    4.1 运行 c:\qt5\bin\windeployqt.exe qttest.exe    或者(windeployqt.exe –no-angle –no-opengl-sw  qt_test.exe)
    4.2 对于 QML 程序,需要指定 QML 目录: c:\qt5\bin\windeployqt.exe –qmldir d:\qttest qttest.exe

这时候就会看到 qt 已经把需要用到的 DLL 都复制过来了。我会在这个基础上再根据需要去掉一些东东:

  1. libEGL.dll, libGLESV2.dll 这两个文件是 ANGLE 的文件,可以去掉。opengl32sw.dll 是软件模拟 OpenGL,除非用户的系统连 DirectX 支持都不完整——虚拟机环境就是这样——不然这个文件也完全没有用。 QtWidgets/C++ 程序都不用 OpenGL,所以直接去掉即可。可在调用 windeployqt.exe 时加”–no-angle” 和 “–no-opengl-sw” 这两个参数。
  2. 如果没有使用 svg 的话,iconengines\qsvgicon.dll, imageformats\qsvg.dll, Qt5Svg.dll 这三个文件也可以删掉
  3. 如果没有国际化用户的话,translations 里面的翻译文件也可以删掉。
  4. QML 程序没有使用 QtWidgets/C++ 可以删掉 Qt5Widgets.dll //C++程序不可以删除!!
  5. 如果 imageformats 目录里面有几种图像格式没用上,也可以删掉。我自己通常把整个目录都删掉,Qt已经编译了 png 的支持,能读写程序包含的图标就够,其它格式不重要。
  6. qmltoolingQt5Network.dll 是用于 QML 调试用的,可以删掉。

经过以上裁剪,使用 7zip 压缩完以后,一个 QtWidgets/C++ helloworld 程序最终只剩下 5.64M,一个 QtControls 程序是 5.86M, QtQuick 程序还会更小一些。

源:谈谈 Qt 程序安装包的大小,以及简要打包指南

猜你喜欢

转载自blog.csdn.net/qq_37967635/article/details/88243249