struct GResource {
/* No available fields */
}
应用程序applications和库libraries通常包含二进制或文本数据,这些数据实际上是应用程序的一部分,而不是用户数据。例如GtkBuilder .ui文件,splashscreen图像,GMenu标记XML, CSS文件,图标等。它们通常以文件的形式存储在$datadir/appname中,或者以字符串字面量的形式手动包含在代码中。
GResource API和[glib-compile-resources]。[glib-compile-resources]程序提供了一个方便高效的替代方案,它有一些很好的属性。你可以像普通文件一样维护这些文件,所以很容易编辑它们,但是在构建过程中,这些文件会被组合成一个链接到可执行文件中的二进制包。这意味着加载资源文件是高效的(因为它们已经在内存中,与其他实例共享)和简单的(不需要检查I/O错误或在文件系统中定位文件)。它还使创建可重定位的应用程序变得更容易。
资源文件也可以标记为压缩文件compressed。这些文件将以压缩形式包含在资源包中,但在使用资源时将自动解除压缩。这非常有用,例如,对于只解析一次(或很少解析)然后丢弃的大型文本文件(调用次数少)。
通过将preprocess属性的值设置为逗号分隔的预处理选项列表,也可以将资源文件标记为可预处理。目前唯一支持的选项是:
xml-stripblanks它将使用xmllint命令从XML文件中去除可忽略的空白。为此,必须将XMLLINT环境变量设置为XMLLINT可执行文件的完整路径,或者必须将XMLLINT包含在该路径中;否则跳过预处理步骤。
to-pixdata(自gdk-pixbuf 2.32起已弃用),它将使用gdk-pixbuf-pixdata命令将图像转换为GdkPixdata格式,这允许您直接使用资源文件中的数据创建pixbufs,而不是它的(未压缩)副本。为此,路径中必须有gdk-pixbuf-pixdata程序,或者必须将GDK_PIXBUF_PIXDATA环境变量设置为gdk-pixbuf-pixdata可执行文件的完整路径;否则资源编译器将中止。自从gdk-pixbuf 2.32以来,to-pixdata已经被弃用,因为GResource同样支持嵌入现代图像格式。与其直接使用它**,不如在GResource中嵌入PNG或SVG文件**。

GResourceAPI和glib-compile-resources工具提供了一种高效的方法来管理应用程序和库中的二进制或文本数据,如GtkBuilder.ui文件、图像和XML。这些资源被整合到可执行文件中,实现快速加载和内存中访问。预处理功能如xml-stripblanks和json-stripblanks可用于优化文件。资源通过/glib-compile-resources编译为二进制包,并可通过get_resource()等函数访问。
最低0.47元/天 解锁文章
1718

被折叠的 条评论
为什么被折叠?



