Qt + CMake 生成带有图标的 exe

参考 官方文档

1. 生成 ico 文件

准备一张图片

我这里是用的 PNG 源文件生成的,建议使用 PNG,这样能保持图标的 透明度
图片如下

image

可以看到,我的原图是 512*512 分辨率的

缩放图片

然后使用 FFMPEG 将其缩放成 16*1632*3248*48256*256 的图片各一张

为什么要用这几种分辨率的呢 这个可以从 Windows 的图标缓存来看。 路径为 %userprofile%\AppData\Local\Microsoft\Windows\Explorer 可以看到有很多 `iconcache_x.db` 这种 `图标缓存` 数据库, 查看下文件大小就能发现,**大多数文件都是空的**,只有以上几个大小不为 0,当然,也许我理解错了。

缩放完毕后,大概是这个样子的
image

生成 ico 文件

参考官网,执行 magick convert 16.png 32.png 48.png 256.png favicon.ico 将这几种图片合并为一个 ico 图片
需要安装 ImageMagickFFMPEG

打包 ico 文件

复制 ico 文件到 项目文件夹,然后 新建一个 rc 文件,填入内容为 IDI_ICON1 ICON DISCARDABLE "favicon.ico"
做完的项目布局为
image
最后,修改 CMakeLists.txt,编译时加入 icon.rc,如图
image
现在可以重新编译了,但是,得到的 exe 图标可能还是很奇怪。
这时候就需要 重建图标缓存

重建图标缓存

复制以下代码

@echo off
cd /d %userprofile%\AppData\Local\Microsoft\Windows\Explorer 
taskkill /f /im explorer.exe 
attrib -h -r -s iconcache_*.db 
del iconcache_*.db /a 
start explorer 
pause

保存为 bat 文件, 右键 以管理员身份运行,记住,执行之前会 关掉资源管理器,所以不要在 复制文件删除文件 时执行!!

执行完毕后就能看到图标的变化了,如图,这是几种排版下的图标
image
image
image
image
image

posted @ 2022-05-11 18:43  博麗靈夢  阅读(1278)  评论(0编辑  收藏  举报