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_template
と h_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で追加)設定されている場合、自動クリーンアップコードを生成します。none
、objects
、または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-po
とhelp-$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_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
:giomodule.cache
ファイルが更新されるprefix
を基準としたディレクトリのリスト。 -
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タイプのキャッシュを更新します。
検索結果は次のとおりです。