英文:
Generate Gsettings schema files in linux
问题
我正在使用Gsettings schema,并有一个com.test.gschema.xml
文件。现在模式内部的一些键是枚举类型的,因此我需要com.test.enums.xml
文件。
现在我正在使用CMakeLists,因此无法使用gsettings_ENUM_NAMESPACE和gsettings_ENUM_FILES。在搜索中,我发现我们可以使用glib-mkenums实用程序,但我尝试使用它生成*.enums.xml文件,通过提供包含枚举声明和定义的.c和.h文件,但它只生成一个没有枚举的空文件。
英文:
I am using Gsettings schema and have com.test.gschema.xml
file. Now some keys inside the schema are enum and thus I require com.test.enums.xml
file.
Now I am using CMakeLists and thus can't use gsettings_ENUM_NAMESPACE and gsettings_ENUM_FILES. On searching I found out that we can make use of glib-mkenums utility but I tried generating the *.enums.xml file using it by providing it the .c and .h files having the enums declaration and definition but all it does is generate an empty file with no enums.
答案1
得分: 1
glib-mkenums
工具解析C文件中的枚举定义,并可用于生成其他文件,通常是用于与GObject一起使用的GType枚举定义的C源文件。同一工具也可用于生成其他文件类型,例如GSettings模式的XML文件。
您可以查看由GLib提供的gsettings.m4
宏文件,以获取在使用Autotools时宏生成的glib-mkenums
命令:
glib-mkenums \
--comments ''<!-- @comment@ -->'' \
--fhead "<schemalist>" \
--vhead " <@type@ id=\'$NAMESPACE.@EnumName@\'>" \
--vprod " <value nick=\'@valuenick@\' value=\'@valuenum@\'/>" \
--vtail " </@type@>" \
--ftail "</schemalist>" \
--output $OUTPUT_FILE \
$INPUT_FILES
其中,$NAMESPACE
是您库的命名空间,将是gsettings_ENUM_NAMESPACE
的值;$INPUT_FILES
包含定义要用作设置值的枚举类型的文件列表;$OUTPUT_FILE
是您正在生成的XML文件。
我建议阅读glib-mkenums
手册页面,其中列出了所有的扩展和选项。
英文:
The glib-mkenums
utility parses C files for enumeration definitions, and can be used to generate other files—typically, C sources for GType enumeration definitions to be used with GObject. The same utility can also be used for generating other file types, like the XML for GSettings schemas.
You can look in the gsettings.m4
macro file shipped by GLib to get the glib-mkenums
incantation that the macros generate for you when using Autotools:
glib-mkenums \
--comments '<!-- @comment@ -->' \
--fhead "<schemalist>" \
--vhead " <@type@ id=\'$NAMESPACE.@EnumName@\'>" \
--vprod " <value nick=\'@valuenick@\' value=\'@valuenum@\'/>" \
--vtail " </@type@>" \
--ftail "</schemalist>" \
--output $OUTPUT_FILE \
$INPUT_FILES
Where $NAMESPACE
is the namespace of your library—and would be the gsettings_ENUM_NAMESPACE
value; $INPUT_FILES
contains the list of files that define enumeration types to be used as settings values; and $OUTPUT_FILE
is the XML file you're generating.
I recommend reading the glib-mkenums
manual page, which lists all the expansions and options.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论