带有 CPack 的应用程序符号

Posted

技术标签:

【中文标题】带有 CPack 的应用程序符号【英文标题】:Application symbol with CPack 【发布时间】:2020-01-23 13:11:42 【问题描述】:

我正在尝试指定 CPack/NSIS 用来创建应用程序符号的图像。它应该显示在开始菜单文件夹、桌面图标和应用程序和功能菜单中。 目前我知道的是:

# Icon displayed inside the installer on top left
set(CPACK_PACKAGE_ICON ""$CMAKE_CURRENT_SOURCE_DIR/images\\\\Icon.bmp")
# Icon visible in Taskbar at installation, same for CPACK_NSIS_MUI_UNIICON 
set(CPACK_NSIS_MUI_ICON "$CMAKE_CURRENT_SOURCE_DIR/images/Install_Icon.ico")         

我已经试过参数CPACK_NSIS_MUI_HEADERIMAGE,

set(CPACK_NSIS_INSTALLED_ICON_NAME bin\\\\$PROJECT_NAME.exe)

以及谷歌页面 1+2 上的所有内容对于 cpack、图标、桌面快捷方式的组合所显示的内容...... 有谁知道这是如何工作的?还是需要特殊的格式/尺寸?

【问题讨论】:

设置应用程序图标(即为您的可执行文件)是特定于平台的 AFAIK。设置应用程序图标与通过 CPack 使用基于 NSIS 的安装程序设置图标完全分开,这是您发布的代码正在执行的操作。 “应用程序符号”是什么意思? .exe 的图标? 是的,.exe 的符号。就像 Internet Explorer 的“e”。 【参考方案1】:

感谢@Developer Paul 的评论,我明白了。 CPack 和 NSIS 在这里具有误导性,因为链接到图标和图像的不同选项表明这是您通过它们进行的设置。 实际上,应用程序图标是在 windows 下使用资源文件 (.rc) 设置的,因此您有 3 个文件:您的 CMakeLists.txt、Icon.ico 和 AppIcon.rc。

在您的 CMakeLists.txt 链接中指向 .rc 文件

add_executable("$PROJECT_NAME" helloworld.cpp AppIcon.rc)

.rc 仅包含指向您的 .ico 的链接,如下所示:

IDI_ICON1 ICON DISCARDABLE "images/icon.ico"

就我而言,我的项目文件夹中有一个单独的 images 文件夹。 基本上就是这样。但是这个解决方案似乎只适用于 Windows,对于 Linux,你必须以不同的方式来做。

【讨论】:

这是给 Qt 的。或者 GTK 呢?

以上是关于带有 CPack 的应用程序符号的主要内容,如果未能解决你的问题,请参考以下文章

cpack:如何在安装过程中将程序与文件扩展名关联?

cpack 生成带有 %files 条目的 RPM,这些条目与 RPM 规范冲突。怎么修?

在 Windows 上使用 CPack 生成源代码包

向 cpack 添加额外的命令 - NSIS 打包程序/安装程序

使用 CPACK 自定义 NSIS 安装程序

如何使用 CPACK_NSIS_WELCOME_TITLE 和 CPACK_NSIS_FINISH_TITLE?