Qt + CMake 生成带有图标的 exe
参考 官方文档
1. 生成 ico 文件
准备一张图片
我这里是用的 PNG
源文件生成的,建议使用 PNG
,这样能保持图标的 透明度
。
图片如下
可以看到,我的原图是 512*512
分辨率的
缩放图片
然后使用 FFMPEG
将其缩放成 16*16
,32*32
,48*48
,256*256
的图片各一张
为什么要用这几种分辨率的呢
这个可以从 Windows 的图标缓存来看。 路径为 %userprofile%\AppData\Local\Microsoft\Windows\Explorer 可以看到有很多 `iconcache_x.db` 这种 `图标缓存` 数据库, 查看下文件大小就能发现,**大多数文件都是空的**,只有以上几个大小不为 0,当然,也许我理解错了。缩放完毕后,大概是这个样子的
生成 ico 文件
参考官网,执行 magick convert 16.png 32.png 48.png 256.png favicon.ico
将这几种图片合并为一个 ico
图片
需要安装 ImageMagick 和 FFMPEG
打包 ico 文件
复制 ico 文件到 项目文件夹
,然后 新建一个 rc
文件,填入内容为 IDI_ICON1 ICON DISCARDABLE "favicon.ico"
做完的项目布局为
最后,修改 CMakeLists.txt
,编译时加入 icon.rc
,如图
现在可以重新编译了,但是,得到的 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
文件, 右键 以管理员身份运行
,记住,执行之前会 关掉资源管理器
,所以不要在 复制文件
或 删除文件
时执行!!
执行完毕后就能看到图标的变化了,如图,这是几种排版下的图标