GNOME 模块

此模块提供构建 GNOME/GLib 程序时所需构建操作的辅助工具。

注意:当您更改源文件时,此处编译命令可能无法正常工作。这是相应编译器的一个错误,它们没有公开所需的依赖项信息。此问题已在上游报告 此错误。在修复此问题之前,您在更改源文件时需要小心。

用法

要使用此模块,只需执行:gnome = import('gnome')。然后,以下函数将作为名为 gnome 的对象上的方法可用。当然,您可以将 gnome 这个名称替换为任何其他名称。

gnome.compile_resources()

    gnome.compile_resources(id: string, input_file: string | File,
                            build_by_default: bool = false,
                            c_name: string | None = None,
                            dependencies: [](File, CustomTarget, CustomTargetIndex) = [],
                            export: bool = false,
                            extra_args: []string = [],
                            gresource_bundle: bool = false,
                            install_dir: string | None = None,
                            source_dir: [string] = [],
                            ): (CustomTarget, CustomTarget) | CustomTarget

此函数将 XML 文件中指定的资源编译成可以嵌入到主二进制文件中的代码。类似构建目标,它接受两个位置参数。第一个是资源的名称,第二个是包含资源定义的 XML 文件。如果名称是 foobar,Meson 将生成一个名为 foobar.h 的头文件,您可以将其包含在您的源代码中。指定的资源会自动添加为生成的目标的依赖项。

  • c_name:传递给资源编译器作为 --c-name 之后的参数
  • dependencies:用于构建的额外目标,供其依赖
  • export: (Added 0.37.0) 如果为 true,则导出生成源代码的符号
  • extra_args:传递给资源的额外命令行参数
  • gresource_bundle: (Added 0.37.0) 如果为 true,则输出 .gresource 文件而不是源代码
  • install: (Added 0.37.0) 如果为 true,则安装 gresource 文件
  • install_dir: (Added 0.37.0) 安装头文件或 bundle 的位置,具体取决于之前的选项
  • install_header: (Added 0.37.0) 如果为 true,则安装头文件
  • source_dir:资源编译器应该在其中查找文件的目录列表

返回包含以下内容的数组:[c_source, header_file][gresource_bundle]

示例

gnome = import('gnome')

asresources = gnome.compile_resources(
    'as-resources', 'data/asresources.gresource.xml',
    source_dir: 'data',
    c_name: 'as'
)

executable(
    meson.project_name(),
    asresources,
    dependencies: my_deps,
    install: true
)

gnome.generate_gir()

生成 GObject 自省数据。

接受一个或多个位置参数

要为其构建 gir 数据的一个或多个库对象,或一个可执行文件对象。

有几个关键字参数。其中许多参数直接映射到 g-ir-scanner 工具,因此请参阅其文档以获取更多信息。

  • dependencies:自省扫描期间要使用的依赖项
  • extra_args:传递给 gir 编译器的命令行参数
  • env: (Added 1.2.0) 要设置的环境变量,例如 {'NAME1': 'value1', 'NAME2': 'value2'}['NAME1=value1', 'NAME2=value2'],或 env 对象,它允许更复杂的处理环境。
  • export_packages:gir 文件导出的额外包
  • sources:要扫描以获取 gir 数据的源代码列表
  • nsversion:命名空间版本
  • namespace:此 gir 对象的命名空间,它决定输出文件
  • identifier_prefix:gir 对象的标识符前缀,例如 Gtk
  • includes:要包含的 gir 名称列表,也可以是 GirTarget
  • header(Added 0.43.0) 要为库包含的主要 c 头文件名称,例如 glib.h
  • include_directories:用于查找 gir 文件的额外包含路径
  • install:如果为 true,则安装生成的文件
  • install_gir: (Added 0.61.0) 覆盖 install,是否安装生成的 gir
  • install_dir_gir: (Added 0.35.0) 要将 gir 文件安装到的目录;(Deprecated since 0.61.0) 可以为 false 以禁用安装
  • install_typelib: (Added 0.61.0) 覆盖 install,是否安装生成的 typelib
  • install_dir_typelib: (Added 0.35.0) 要将 typelib 文件安装到的目录;(Deprecated since 0.61.0) 可以为 false 以禁用安装
  • link_with:要链接的库列表
  • symbol_prefix:gir 对象的符号前缀,例如 gtk,(Since 0.43.0) 允许使用多个前缀的有序列表
  • fatal_warningsSince 0.55.0 将扫描器警告转换为致命错误。

返回包含两个元素的数组,它们是:[gir_target, typelib_target]

gnome.genmarshal()

使用 glib-genmarshal 工具生成一个 marshal 文件。第一个参数是输出文件的基名。

  • depends [](BuildTarget | CustomTarget | CustomTargetIndex): 直接传递给 CustomTarget (since 0.61.0)
  • depend_files [](str | File): 直接传递给 CustomTarget (since 0.61.0)
  • extra_args: (Added 0.42.0) 要传递的额外命令行参数
  • install_dir:要安装头文件的目录
  • install_header:如果为 true,则安装生成的头文件
  • install_dir:要安装头文件的目录
  • install_header:如果为 true,则安装生成的头文件
  • internal:如果为 true,则将生成的源代码标记为 glib-genmarshal 的内部 (Requires GLib 2.54)
  • nostdinc:如果为 true,则不包含来自 glib 的标准 marshaler
  • prefix:要用于符号的前缀
  • skip_source:如果为 true,则跳过源代码位置注释
  • sources [](str | File) required:要用作输入的源代码列表
  • stdinc:如果为 true,则包含来自 glib 的标准 marshaler
  • valist_marshallers:如果为 true,则生成 va_list marshaler

Added 0.35.0

返回包含两个元素的数组,它们是:[c_source, header_file]

gnome.mkenums()

使用 glib-mkenums 工具为 GObject 生成枚举文件。第一个参数是输出文件的基名,除非指定了 c_templateh_template。在这种情况下,输出文件将是作为模板传递的值的基名。

此方法本质上是围绕 glib-mkenums 工具的命令行 API 的包装器。它是用于枚举创建功能最全面的方法。

通常,您要么提供模板文件,要么以字符串的形式手动指定各个模板部分。

大多数库和应用程序将使用相同的标准模板,只需进行少量调整,在这种情况下,可以使用 gnome.mkenums_simple() 方便方法。

请注意,如果您在任何构建目标的源代码中 #include 生成的头文件,则必须将生成的头文件添加到构建目标的源代码列表中,以对依赖关系进行编码。这对所有生成源代码都是如此,而不仅仅是 mkenums

所有生成的源代码,而不仅仅是 mkenums

  • c_template:用于生成源代码的模板
  • comments:传递给命令的注释
  • h_template:用于生成头文件的模板
  • identifier_prefix:要用于标识符的前缀
  • install_header:如果为 true,则安装生成的头文件
  • install_dir:要安装头文件的目录
  • sources:要使用其创建枚举的源代码列表
  • symbol_prefix:要用于符号的前缀
  • eprod:枚举文本
  • fhead:文件头
  • fprod:文件文本
  • ftail:文件尾
  • vhead:值文本
  • vtail:值尾

Added 0.35.0

返回包含两个元素的数组,它们是:[c_source, header_file]

gnome.mkenums_simple()

使用 glib-mkenums 工具为 GObject 生成枚举 .c.h 文件,使用大多数基于 GObject 的 C 库使用的标准模板。第一个参数是输出文件的基名。

请注意,如果您在任何构建目标的源代码中 #include 生成的头文件,则必须将生成的头文件添加到构建目标的源代码列表中,以对依赖关系进行编码。这对所有生成源代码都是如此,而不仅仅是 mkenums_simple

生成的源文件包含传递给 sources 关键字参数的所有头文件,使用相对于当前构建或源代码目录的路径。这意味着编译生成源文件的目标必须将其当前目录包含在其 include_directories 中。Since 1.3.0 sources 不在当前目录中的 sources 不再需要将这些目录添加到 include_directories 中。

  • body_prefix:主体文件顶部的额外前缀,例如用于额外包含
  • decorator:函数声明的可选修饰符,例如 GTK_AVAILABLEGST_EXPORT
  • function_prefix:函数名称的额外前缀,例如如果您想在仅供内部使用的函数前添加下划线
  • header_prefix:头文件顶部的额外前缀,例如用于额外包含(如果您为函数声明指定了修饰符,则可能需要这些包含)
  • install_header:如果为 true,则安装生成的头文件
  • install_dir:要安装头文件的目录
  • identifier_prefix:要用于标识符的前缀
  • sources:要使用其创建枚举的源代码列表
  • symbol_prefix:要用于符号的前缀

示例

gnome = import('gnome')

my_headers = ['myheader1.h', 'myheader2.h']
my_sources = ['mysource1.c', 'mysource2.c']

# will generate myenums.c and myenums.h based on enums in myheader1.h and myheader2.h
enums = gnome.mkenums_simple('myenums', sources : my_headers)

mylib = library('my', my_sources, enums,
                include_directories: my_incs,
                dependencies: my_deps,
                c_args: my_cargs,
                install: true)

Added 0.42.0

返回包含两个元素的数组,它们是:[c_source, header_file]

gnome.compile_schemas()

调用此方法时,它将编译当前目录中的 gschemas。请注意,这不是用于安装模式,仅在本地运行应用程序时有用,例如在测试期间。

  • build_by_default:设置为 true 时,会导致此目标默认构建,即,当调用 plain meson compile 时,所有构建目标类型默认值为 true
  • depend_files:模式源 XML 文件的文件 (strfiles(),或 configure_file()),如果更改这些文件,应触发重新编译。

gnome.gdbus_codegen()

将给定的 XML 模式编译成 gdbus 源代码。接受两个位置参数,第一个指定创建输出源代码和头文件时要使用的基名,第二个指定一个 XML 文件。

  • sources:XML 文件列表
  • interface_prefix:接口的前缀
  • namespace:接口的命名空间
  • extra_args: (Added 0.47.0) 要传递的额外命令行参数
  • autocleanup(Added 0.47.0) 如果设置,则生成自动清理代码。可以是 noneobjectsall 中的任何一个
  • object_manager(Added 0.40.0) 如果为 true,则生成对象管理器代码
  • annotations(Added 0.43.0) 用于 'ELEMENT''KEY''VALUE' 的注释的 3 个字符串列表
  • docbook(Added 0.43.0) 用于生成 'PREFIX'-NAME.xml docbooks 的前缀
  • build_by_default:设置为 true 时,会导致此目标默认构建,即,当调用 plain meson compile 时,所有构建目标类型默认值为 true
  • install_dir: (Added 0.46.0) 安装头文件或 bundle 的位置,具体取决于之前的选项
  • install_header: (Added 0.46.0) 如果为 true,则安装头文件

0.46.0 开始,此函数返回至少两个自定义目标的列表(按顺序):一个用于源代码,一个用于头文件。如果传递了该关键字参数,列表将包含第三个自定义目标,用于生成的 docbook 文件。

早期版本返回表示所有输出的单个自定义目标。通常,您只需将此目标列表添加到顶级目标的源代码列表中。

示例

gnome = import('gnome')

# The returned source would be passed to another target
gdbus_src = gnome.gdbus_codegen('example-interface',
  sources: 'com.example.Sample.xml',
  interface_prefix : 'com.example.',
  namespace : 'Sample',
  annotations : [
    ['com.example.Hello()', 'org.freedesktop.DBus.Deprecated', 'true']
  ],
  docbook : 'example-interface-doc'
)

gnome.generate_vapi()

从 gir 创建 VAPI 文件。第一个参数是库的名称。

  • gir_dirs:要包含的 gir 文件的额外目录
  • install:如果为 true,则安装 VAPI 文件
  • install_dir:要安装 VAPI 文件的位置(默认为 datadir/vala/vapi)
  • metadata_dirs:要包含的元数据文件的额外目录
  • packages:所依赖的 VAPI 包
  • sources:要从中生成 VAPI 的 gir 源代码
  • vapi_dirs:要包含的 VAPI 文件的额外目录

返回一个自定义依赖项,可以在构建其他 VAPI 或 Vala 二进制文件时包含。

在 0.36.0 中添加

gnome.yelp()

  gnome.yelp(id: string, sources: ...string, sources: []string, media: []string,
             languages: []string, symlink_media: bool = true): void

使用 itstool 和 gettext 安装 Yelp 的帮助文档。第一个参数是项目 ID。

此外,可以将源代码作为附加的位置参数传递。但是,这没有记录,也没有正式支持。由于长期存在的一个错误,将源代码作为关键字参数传递会导致忽略位置参数源代码。自 0.60.0 起,在这种情况下会发出警告。

自 0.43.0 起,如果未指定“languages”,则会读取 LINGUAS 文件。

自 0.60.0 起,位置参数源代码的使用已弃用,应使用“sources”关键字参数。将来将删除将源代码作为位置参数传递的功能。

这也为翻译创建了两个目标:help-$project-update-pohelp-$project-pot

  • languages(自 0.43.0 起弃用) 用于翻译的语言列表,覆盖 LINGUAS 文件
  • media:媒体列表,例如图像
  • sources:页面列表
  • symlink_media:如果媒体应该创建符号链接而不是复制(自 0.42.0 起默认值为 true

请注意,非常旧版本的 yelp 可能不支持符号链接的媒体;至少 3.10 应该可以工作。

在 0.36.0 中添加

gnome.gtkdoc()

将 gtkdoc 文档编译并安装到 prefix/share/gtk-doc/html 中。接受一个位置参数:模块的名称。

  • content_files:内容文件列表
  • dependencies:依赖项列表
  • fixxref_args:传递给 gtkdoc-fixxref 的参数列表
  • gobject_typesfile:类型文件列表
  • include_directories:传递给 gtkdoc-scangobj 的额外包含路径
  • ignore_headers:要忽略的头文件列表
  • html_assets:HTML 页面资产列表
  • html_args:传递给 gtkdoc-mkhtml 的参数列表
  • install:如果为 true,则安装生成的文档
  • install_dir:相对于 gtk-doc html 目录或绝对路径安装生成文档的目录(默认值:模块名称)
  • main_xml:指定主 XML 文件
  • main_sgml:等于 main_xml
  • mkdb_args:传递给 gtkdoc-mkdb 的参数列表
  • namespace:指定传递给 gtkdoc-mkdb 的命名空间
  • module_version:模块的版本,影响安装位置和 devhelp2 文件位置
  • scan_args:传递给 gtkdoc-scan 的参数列表
  • scanobjs_args:传递给 gtkdoc-scangobj 的参数列表
  • c_args(0.48.0 添加) 要传递的其他编译参数
  • src_dir:要包含的 include_directories
  • check(自 0.52.0 起) 如果为 true,则在运行单元测试时运行 gtkdoc-check。请注意,这会导致每次构建都重建文档,这通常非常慢。通常,它应该仅在 CI 中启用。

这也创建了一个 $module-doc 目标,可以运行它来构建文档。通常,文档仅在安装时构建。

自 0.52.0 起,返回一个目标对象,该对象可以作为依赖项传递给其他目标,这些目标使用生成的文档文件(例如,在另一个文档的 content_files 中)。

gnome.gtkdoc_html_dir()

以模块名称作为参数,并返回将安装该模块的 HTML 文件的路径。通常与 install_data 一起使用,将额外文件(例如图像)安装到输出目录。

gnome.post_install()

自 0.57.0 起

对各种系统范围的缓存进行安装后更新。即使 gnome.post_install() 从多个子项目中多次调用,每个脚本也只会执行一次。如果在安装期间指定了 DESTDIR,所有脚本都将被跳过。

它接受以下关键字参数

  • glib_compile_schemas:如果设置为 true,则更新 <prefix>/<datadir>/glib-2.0/schemas 中的 gschemas.compiled 文件。
  • gio_querymodules:相对于 prefix 的目录列表,将在其中更新 giomodule.cache 文件。
  • gtk_update_icon_cache:如果设置为 true,则更新 <prefix>/<datadir>/icons/hicolor 中的 icon-theme.cache 文件。
  • update_desktop_database自 0.59.0 起,如果设置为 true,则更新 <prefix>/<datadir>/applications 中的桌面文件处理的 MIME 类型缓存。
  • update_mime_database自 0.64.0 起,如果设置为 true,则更新 <prefix>/<datadir>/mime 中的 MIME 类型缓存。

搜索结果如下: