在 linux 中生成 Gsettings 架构文件

Generate Gsettings schema files in linux

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

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

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 手册页,其中列出了所有扩展和选项。