我正在编写一个 C++ 程序,使用 gtkmm 作为窗口库,使用 autotools 作为我的构建系统。在我的 Makefile.am 中,我按如下方式安装图标:
icondir = $(datadir)/icons/hicolor/scalable/apps
icon_DATA = $(top_srcdir)/appname.svg
Run Code Online (Sandbox Code Playgroud)
编辑:更改prefix为datadir
这导致在安装程序时appname.svg被复制到$(datadir)/icons/hicolor/scalable/apps。在我的 C++ 代码中,我想在运行时访问图标以进行窗口装饰:
string iconPath = DATADIR + "/icons/hicolor/scalable/apps/appname.svg";
// do stuff with the icon
Run Code Online (Sandbox Code Playgroud)
我不确定如何DATADIR为此目的获得。我可以使用相对路径,但是移动二进制文件会破坏图标,这似乎很明显。我认为应该有一种特殊的方式来处理与一般数据分开的图标,因为人们可以安装 3rd 方图标包。所以,我有两个问题:
编辑:gtkmm 有一个IconTheme类,它是在 gtkmm 中使用图标的标准方法。看来我add_resource_path()(为此我仍然需要安装前缀),然后我可以使用库按名称获取图标。