我正在使用Gsettings模式并有com.test.gschema.xml
文件。现在架构中的一些键是枚举,因此我需要com.test.enums.xml
文件。
现在我正在使用CMakeLists,因此无法使用gsettings_ENUM_NAMESPACE和gsettings_ENUM_FILES。在搜索时,我发现我们可以使用 glib-mkenums 实用程序,但我尝试使用它生成 *.enums.xml 文件,方法是提供具有枚举声明和定义的 .c 和 .h 文件,但它所做的只是生成一个没有枚举的空文件。
glib-mkenums
实用程序解析 C 文件以获取枚举定义,并可用于生成其他文件 — 通常是 GType 枚举定义的 C 源,用于与 GObject 一起使用。同一实用程序还可用于生成其他文件类型,如 XML for GSettings 架构。
您可以查看 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
手册页,其中列出了所有扩展和选项。