【问题标题】:Generate Gsettings schema files in linux在 linux 中生成 Gsettings 架构文件
【发布时间】:2020-01-03 11:28:29
【问题描述】:

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

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

【问题讨论】:

    标签: linux glib gsettings


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

    【讨论】:

    • 感谢您的回答。实际上我正在使用 CMake 构建,我需要调用上面的命令。那么@type@ 或@valuenick@ 的值是多少?
    • 我试过上面的命令,它正在工作。 glib-mkenums 还从传递给它的输入文件中计算出所有 @...@ 的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多