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 ファイルで指定されたリソースを、メインバイナリに埋め込むことができるコードにコンパイルします。ビルドターゲットと同様に、2つの位置引数を取ります。1つ目はリソースの名前、2つ目はリソース定義を含む XML ファイルです。名前が foobar の場合、Meson は foobar.h というヘッダーファイルを生成し、それをソースに含めることができます。指定されたリソースは、生成されたターゲットの依存関係として自動的に追加されます。

  • c_name: --c-name の後に引数としてリソースコンパイラに渡されます
  • dependencies: ビルド時に依存する追加のターゲット
  • export: (0.37.0 で追加) true の場合、生成されたソースのシンボルをエクスポートします
  • extra_args: リソースに渡す追加のコマンドライン引数
  • gresource_bundle: (0.37.0 で追加) true の場合、ソースの代わりに .gresource ファイルを出力します
  • install: (0.37.0 で追加) true の場合、gresource ファイルをインストールします
  • install_dir: (0.37.0 で追加) 前のオプションに応じてヘッダーまたはバンドルをインストールする場所
  • install_header: (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 イントロスペクションデータを生成します。

1つ以上の位置引数を取ります

gir データをビルドする 1 つ以上のライブラリオブジェクト、または単一の実行可能オブジェクト。

いくつかのキーワード引数があります。これらの多くは g-ir-scanner ツールに直接マッピングされているため、詳細についてはそのドキュメントを参照してください。

  • dependencies: イントロスペクションスキャン中に使用する依存関係
  • extra_args: gir コンパイラに渡すコマンドライン引数
  • env: (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: (0.43.0 で追加) ライブラリに含めるメイン C ヘッダーの名前。例: glib.h
  • include_directories: gir ファイルを検索する追加のインクルードパス
  • install: true の場合、生成されたファイルをインストールします
  • install_gir: (0.61.0 で追加) install をオーバーライドします。生成された gir をインストールするかどうか。
  • install_dir_gir: (0.35.0 で追加) gir ファイルをインストールするディレクトリ。(0.61.0 以降非推奨) false にするとインストールが無効になります
  • install_typelib: (0.61.0 で追加) install をオーバーライドします。生成されたタイプライブラリをインストールするかどうか。
  • install_dir_typelib: (0.35.0 で追加) タイプライブラリファイルをインストールするディレクトリ。(0.61.0 以降非推奨) false にするとインストールが無効になります
  • link_with: リンクするライブラリのリスト
  • symbol_prefix: gir オブジェクトのシンボルプレフィックス。例: gtk、(0.43.0 以降) 複数のプレフィックスの順序付きリストが許可されています
  • fatal_warnings: 0.55.0 以降 スキャナーの警告を致命的なエラーに変換します。

[gir_target, typelib_target] である 2 つの要素の配列を返します

gnome.genmarshal()

glib-genmarshal ツールを使用してマーシャルファイルを生成します。最初の引数は、出力ファイルのベース名です。

  • depends [](BuildTarget | CustomTarget | CustomTargetIndex): CustomTarget に直接渡されます (0.61.0 以降)
  • depend_files [](str | File): CustomTarget に直接渡されます (0.61.0 以降)
  • extra_args: (0.42.0 で追加) 渡す追加のコマンドライン引数
  • install_dir: ヘッダーをインストールするディレクトリ
  • install_header: true の場合、生成されたヘッダーをインストールします
  • install_dir: ヘッダーをインストールするディレクトリ
  • install_header: true の場合、生成されたヘッダーをインストールします
  • internal: true の場合、生成されたソースを glib-genmarshal の内部としてマークします (GLib 2.54 が必要)
  • nostdinc: true の場合、glib から標準マーシャラーを含めません
  • prefix: シンボルに使用するプレフィックス
  • skip_source: true の場合、ソースの場所のコメントをスキップします
  • sources [](str | File) 必須: 入力として使用するソースのリスト
  • stdinc: true の場合、glib から標準マーシャラーを含めます
  • valist_marshallers: true の場合、va_list マーシャラーを生成します

0.35.0 で追加

[c_source, header_file] である 2 つの要素の配列を返します

gnome.mkenums()

glib-mkenums ツールを使用して、GObject の列挙型ファイルを生成します。最初の引数は、出力ファイルのベース名です。ただし、c_templateh_template が指定されている場合は除きます。この場合、出力ファイルはテンプレートとして渡された値のベース名になります。

このメソッドは、本質的に glib-mkenums ツールのコマンドライン API のラッパーです。列挙型を作成するための最も機能豊富なメソッドです。

通常は、テンプレートファイルを提供するか、さまざまなテンプレートセクションを文字列として手動で指定します。

ほとんどのライブラリとアプリケーションは、わずかな調整を加えた同じ標準テンプレートを使用します。その場合は、代わりに gnome.mkenums_simple() という便利なメソッドを使用できます。

ビルドターゲットのソースのいずれかで生成されたヘッダーを #include する場合、依存関係をコード化するために、生成されたヘッダーをビルドターゲットのソースのリストに追加する必要があることに注意してください。これは、mkenums だけでなく、すべての生成されたソースに当てはまります。

  • c_template: ソースの生成に使用するテンプレート
  • comments: コマンドに渡されるコメント
  • h_template: ヘッダーの生成に使用するテンプレート
  • identifier_prefix: 識別子に使用するプレフィックス
  • install_header: true の場合、生成されたヘッダーをインストールします
  • install_dir: ヘッダーをインストールするディレクトリ
  • sources: 列挙型を作成するソースのリスト
  • symbol_prefix: シンボルに使用するプレフィックス
  • eprod: 列挙型のテキスト
  • fhead: ファイルヘッダー
  • fprod: ファイルテキスト
  • ftail: ファイル末尾
  • vhead: 値のテキスト
  • vtail: 値の末尾

0.35.0 で追加

[c_source, header_file] である 2 つの要素の配列を返します

gnome.mkenums_simple()

glib-mkenums ツールと、ほとんどの GObject ベースの C ライブラリで使用される標準テンプレートを使用して、GObject の列挙型 .c および .h ファイルを生成します。最初の引数は、出力ファイルのベース名です。

ビルドターゲットのソースのいずれかで生成されたヘッダーを #include する場合、依存関係をコード化するために、生成されたヘッダーをビルドターゲットのソースのリストに追加する必要があることに注意してください。これは、mkenums_simple だけでなく、すべての生成されたソースに当てはまります。

生成されたソースファイルには、sourcesキーワード引数に渡されたすべてのヘッダーが含まれており、現在のビルドディレクトリまたはソースディレクトリからの相対パスが使用されます。つまり、生成されたソースファイルをコンパイルするターゲットは、include_directories に現在のディレクトリを含める必要があります。 1.3.0 以降、現在のディレクトリ以外の sources は、それらのディレクトリを include_directories に追加する必要がなくなりました。

  • body_prefix: 本体のファイルの先頭に追加のプレフィックス。例: 追加のインクルード用
  • decorator: 関数宣言のオプションのデコレータ。例: GTK_AVAILABLE または GST_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)

0.42.0 で追加

[c_source, header_file] である 2 つの要素の配列を返します

gnome.compile_schemas()

このメソッドが呼び出されると、現在のディレクトリにある gschema がコンパイルされます。これはスキーマのインストール用ではなく、テスト中等にアプリケーションをローカルで実行する場合にのみ役立つことに注意してください。

  • build_by_default: true に設定すると、このターゲットがデフォルトでビルドされるようになります。つまり、プレーンな meson compile を呼び出すと、すべてのビルドターゲットタイプのデフォルト値は true になります
  • depend_files: 変更された場合に再コンパイルをトリガーするスキーマソース XML ファイルのファイル (str, files(), または configure_file())。

gnome.gdbus_codegen()

指定されたXMLスキーマをgdbusソースコードにコンパイルします。2つの位置引数を取ります。最初の引数は、出力ソースとヘッダーの作成時に使用するベース名を指定し、2番目の引数は1つのXMLファイルを指定します。

  • sources:XMLファイルのリスト
  • interface_prefix:インターフェースのプレフィックス
  • namespace:インターフェースの名前空間
  • extra_args:(0.47.0で追加)渡す追加のコマンドライン引数
  • autocleanup(0.47.0で追加)設定されている場合、自動クリーンアップコードを生成します。 noneobjects、またはallのいずれかを指定できます。
  • object_manager(0.40.0で追加) trueの場合、オブジェクトマネージャーコードを生成します。
  • annotations(0.43.0で追加) 'ELEMENT''KEY''VALUE'のアノテーション用の3つの文字列のリストのリスト
  • docbook(0.43.0で追加) 'PREFIX'-NAME.xml docbookを生成するためのプレフィックス
  • build_by_default: true に設定すると、このターゲットがデフォルトでビルドされるようになります。つまり、プレーンな meson compile を呼び出すと、すべてのビルドターゲットタイプのデフォルト値は true になります
  • install_dir:(0.46.0で追加)前のオプションに応じてヘッダーまたはバンドルをインストールする場所
  • install_header:(0.46.0で追加)trueの場合、ヘッダーファイルをインストールします

0.46.0以降、この関数は少なくとも2つのカスタムターゲットのリストを(順番に)返します。1つはソースコード用、もう1つはヘッダー用です。そのキーワード引数が渡された場合、リストには生成されたdocbookファイル用の3番目のカスタムターゲットが含まれます。

以前のバージョンは、すべての出力を表す単一のカスタムターゲットを返します。一般的に、このターゲットのリストをトップレベルのターゲットのソースリストに追加する必要があります。

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」キーワード引数を代わりに使用する必要があります。位置引数としてのソースの受け渡しは、将来削除されます。

これは、翻訳用の2つのターゲット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にインストールします。1つの位置引数を取ります:モジュールの名前。

  • content_files:コンテンツファイルのリスト
  • dependencies:依存関係のリスト
  • fixxref_argsgtkdoc-fixxrefに渡す引数のリスト
  • gobject_typesfile:タイプファイルのリスト
  • include_directoriesgtkdoc-scangobjに渡す追加のインクルードパス
  • ignore_headers:無視するヘッダーファイルのリスト
  • html_assets:HTMLページのアセットのリスト
  • html_argsgtkdoc-mkhtmlに渡す引数のリスト
  • install:trueの場合、生成されたドキュメントをインストールします
  • install_dir:生成されたドキュメントをインストールするディレクトリ。gtk-doc htmlディレクトリからの相対パスまたは絶対パス(デフォルト:モジュール名)
  • main_xml:メインのXMLファイルを指定します
  • main_sgmlmain_xmlと同じです
  • mkdb_argsgtkdoc-mkdbに渡す引数のリスト
  • namespacegtkdoc-mkdbに渡す名前空間を指定します
  • module_version:モジュールのバージョン。インストール場所とdevhelp2ファイルの場所に影響します。
  • scan_argsgtkdoc-scanに渡す引数のリスト
  • scanobjs_argsgtkdoc-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_schemastrueに設定されている場合、<prefix>/<datadir>/glib-2.0/schemasgschemas.compiledファイルを更新します。
  • gio_querymodulesgiomodule.cacheファイルが更新されるprefixを基準としたディレクトリのリスト。
  • gtk_update_icon_cachetrueに設定されている場合、<prefix>/<datadir>/icons/hicoloricon-theme.cacheファイルを更新します。
  • update_desktop_database0.59.0以降 trueに設定されている場合、<prefix>/<datadir>/applicationsのデスクトップファイルによって処理されるMIMEタイプのキャッシュを更新します。
  • update_mime_database:_0.64.0以降_ trueに設定されている場合、<prefix>/<datadir>/mimeのMIMEタイプのキャッシュを更新します。

検索結果は次のとおりです。