gpt4 book ai didi

gtk3 - GTK/C 和 GtkBuilder 制作单个可执行文件

转载 作者:行者123 更新时间:2023-12-04 13:48:54 25 4
gpt4 key购买 nike

在我的项目中,我调用 gtk_builder_add_from_file 函数来加载一个 xml 文件,其中包含之前使用 Glade 设计的 ui 对象。所以,我有我的二进制程序和(在同一文件夹中)xml 文件。

将所有内容打包到单个可执行文件中的最佳方法是什么?我应该使用自解压脚本吗?还是有其他东西可以一起编译?

感谢大家

最佳答案

您可以使用可用的 GResource API in GIO . GResources 通过在 XML 文件中定义您希望随应用程序一起提供的 Assets 来工作,类似于:

<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/com/example/YourApp">
<file preprocess="xml-stripblanks">your-app.ui</file>
<file>some-image.png</file>
</gresource>
</gresources>

注意prefix属性,因为后面会用到。

添加 Assets 后,您可以使用 GLib 提供的 glib-compile-resources 二进制文件生成一个包含所有 Assets 的 C 文件,编码为字节数组。生成的代码还将使用各种编译器公开的全局构造函数功能,以便在加载应用程序后(在调用 main 之前)加载资源,或者在共享对象的情况下,加载一次该库由链接器加载。在 Makefile 中调用 glib-compiler-resources 的示例是:

GLIB_COMPILE_RESOURCES = $(shell $(PKGCONFIG) --variable=glib_compile_resources gio-2.0)

resources = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=. --generate-dependencies your-app.gresource.xml

your-app-resources.c: your-app.gresource.xml $(resources)
$(GLIB_COMPILE_RESOURCES) your-app.gresource.xml --target=$0 --sourcedir=. --geneate-source

然后您必须将 your-app-resources.c 添加到您的构建中。

为了访问您的 Assets ,您应该使用在各种类中公开的from_resource() 函数;例如,要在 GtkBuilder 中加载 UI 描述,您应该使用 gtk_builder_add_from_resource() .使用的路径是您在 GResource XML 文件中定义的 prefix 和文件名的组合,例如:/com/example/YourApp/your-app.ui。从 GFile 加载时,您还可以使用 resource:// URI。

您可以在 GResources API reference page 上找到更多信息.

关于gtk3 - GTK/C 和 GtkBuilder 制作单个可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28855850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com