Loading

QT打包exe程序过大

剪裁qt构建的exe程序的大小

在QT Creator中使用release方式构建整个项目,使用的是MinGW进行项目的构建
image
在生成的文件夹下build-xxx-Desktop_Qt_5_12_12_MinGW_64_bit-Release\release\xxx.exe,选择对应的exe文件,将exe文件复制到别的文件夹下,开始目录下打开Qt 5.12.12(MinGW 7.3.0 64bit),将路径切换到exe文件所在的新文件下;输入指令windeployqt --no-angle --no-opengl-sw rename.exe,windeployqt是qQT\5.12.12\mingw73_64\bin目录下的一个可执行文件,用于exe的部署,--no-angle,--no-opengl-sw是两个参数,意思是在打包exe时不要添加angle、opengl的dll文件
image
执行结果:
image

没有使用SVG,删除Qt5Svg.dlliconengines\qsvgicon.dllimageformats\qsvg.dlltranslations文件夹存放的是翻译文件,直接删掉;imageformats文件夹下存放的是各种图片格式所需的dll文件,项目中只使用了png格式的图片,Qt已经编译了 png 的支持,能读写程序包含的图标就够,其它格式不重要,直接删除该文件夹。
裁剪之前54M,裁剪完之后,整个文件夹21.2M,要打包成一个exe文件,可以使用Enigma Virtual Box

使用Enigma Virtual Box打包exe

image
image
点击Process运行,将rename.exe以及相关的dll文件打包成一个exe文件,打包之后为10.3M

为exe文件添加图标

QT通过release方式构建的exe文件默认不带图标,需要使用.ico文件(32x32像素)并将其添加整个项目的Resources中,这是我的Resources文件夹结构可以看到logo.ico位于image目录下。
image
有两种方式在.pro文件中添加ico文件,添加文件时要注意文件结构

  • RC_ICONS = image\logo.ico其添加到.pro文件中
  • 如果使用rc文件的方式,那么logo.rc文件中的内容是这样的:IDI_ICON1 ICON "logo.ico",在.pro文件中添加RC_FILE = logo.rc

通过release方式构建后,成功添加图标,在build-xxx-Desktop_Qt_5_12_12_MinGW_64_bit-Release\release文件夹下可以找到已添加图标的exe文件
image

QT应用程序在高DPI下的缩放问题

https://blog.csdn.net/yinyuchen1/article/details/99607722

参考资料:
https://hgoldfish.com/blogs/article/103/
https://blog.csdn.net/weixin_42126427/article/details/113250855
https://blog.csdn.net/yaojinjian1995/article/details/106420089
https://doc.qt.io/qt-5/appicon.html

posted @ 2024-06-07 13:56  记录学习的Lyx  阅读(9)  评论(0编辑  收藏  举报