0

我正在使用Gsettings 架构并有com.test.gschema.xml文件。现在架构中的一些键是枚举,因此我需要com.test.enums.xml文件。

现在我正在使用 CMakeLists ,因此不能使用gsettings_ENUM_NAMESPACEgsettings_ENUM_FILES。在搜索中,我发现我们可以使用glib-mkenums实用程序,但我尝试通过向它提供具有枚举声明和定义的 .c 和 .h 文件来使用它生成 *.enums.xml 文件,但它所做的只是生成一个没有枚举的空文件。

4

1 回答 1

1

glib-mkenums实用程序解析 C 文件以获取枚举定义,并可用于生成其他文件 - 通常是用于 GObject 的 GType 枚举定义的 C 源文件。相同的实用程序还可用于生成其他文件类型,例如用于 GSettings 模式的 XML。

您可以查看gsettings.m4GLib 提供的宏文件,以获取glib-mkenums宏在使用 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

你的库的命名空间在哪里$NAMESPACE——并且是gsettings_ENUM_NAMESPACE值;$INPUT_FILES包含定义用作设置值的枚举类型的文件列表;并且$OUTPUT_FILE是您正在生成的 XML 文件。

我建议阅读glib-mkenums手册页,其中列出了所有扩展和选项。

于 2020-01-04T02:44:21.617 回答