生成Linux中的Gsettings模式文件

huangapple go评论66阅读模式
英文:

Generate Gsettings schema files in linux

问题

我正在使用Gsettings schema,并有一个com.test.gschema.xml文件。现在模式内部的一些键是枚举类型的,因此我需要com.test.enums.xml文件。

现在我正在使用CMakeLists,因此无法使用gsettings_ENUM_NAMESPACEgsettings_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.

huangapple
  • 本文由 发表于 2020年1月3日 19:28:29
  • 转载请务必保留本文链接:https://go.coder-hub.com/59577832.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定