【原创】GTK3中如何将资源打包进独立的exe文件?
问题背景:
1、先说说什么是GTK中的资源文件? 比如常见的图片、ICON、CSS、glade/xml文件等等,这些都是GTK中的资源文件;
2、正常如果直接在代码中引入资源文件的话,将来发布exe程序后,必须将用到的所有资源文件一起捆绑同步发布,否则UI工作肯定异常,所以最好的策略还是将资源文件打包到exe文件中。
3、我们以修改应用程序的启动ICON为例进行介绍。
设定项目目录结构:
MyProject/ |-- main.c `-- ui |-- gresource.xml |-- project.glade `-- tiger.png
解决方案:
1、必须先切换到ui目录:
cd /path/to/MyProject/ui
2、新建gresource.xml文件,并粘贴如下内容:
<?xml version="1.0" encoding="UTF-8"?> <gresources> <gresource prefix="/assets"> <file preprocess="xml-stripblanks">project.glade</file> <file>tiger.png</file> </gresource> </gresources>3、编译资源文件:
glib-compile-resources --target=../resources.c --generate-source gresource.xml4、最后我们得到了资源文件对应的C源文件即:resources.c
5、在主代码main.c中新增或修改相关调用代码为:
GtkBuilder *builder = gtk_builder_new ();; main_window = gtk_builder_get_object(builder, "main_window"); gtk_builder_add_from_resource(builder, "/assets/project.glade", NULL); GdkPixbuf *icon = gdk_pixbuf_new_from_resource("/assets/tiger.png", NULL); gtk_window_set_icon(GTK_WINDOW(main_window), icon);
6、编译整个工程
官方资源:
https://developer-old.gnome.org/gtkmm-tutorial/stable/sec-gio-resource.html.en
版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。