【原创】GTK3中如何将资源打包进独立的exe文件?

blogdaren 2022-05-17 抢沙发 352人次

问题背景:

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.xml
4、最后我们得到了资源文件对应的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 )原创,转载请保留文章出处。

本文链接:【原创】GTK3中如何将资源打包进独立的exe文件?

Free Web Hosting