Mesonオブジェクト (meson
)
meson
オブジェクトを使用すると、システムのさまざまなプロパティをイントロスペクトできます。このオブジェクトは常にmeson
変数にマップされます。
Mesonオブジェクトのメソッド
meson.add_devenv()
env
オブジェクト(environment()
によって返される)を、meson devenv
コマンドラインを使用する際に適用される環境リストに追加します。
これは、プロジェクトをインストールせずに使用したい開発者にとって役立ちます。たとえば、プラグインディレクトリへのパスを設定する必要があることがよくあります。または、リストまたは辞書を最初の引数として渡すこともできます。
devenv = environment()
devenv.set('PLUGINS_PATH', meson.current_build_dir())
...
meson.add_devenv(devenv)
プロジェクトを設定およびコンパイルした後、環境が設定された状態でターミナルを開くことができます
$ meson devenv -C <builddir>
$ echo $PLUGINS_PATH
/path/to/source/subdir
Mesonによってデフォルトで設定される環境変数のリストについては、meson devenv
コマンドのドキュメントを参照してください。
シグネチャ
(0.58.0以降)
# add an env
object (returned by environment()
)
void add_devenv(
env | str | list[str] | dict[str] | dict[list[str]] env, # The env
object to add.
# Keyword arguments:
method : str # Must be one of 'set', 'prepend', or 'append'
separator : str # The separator to use for the initial values defined in
)
引数
メソッドmeson.add_devenv()
は、次の位置引数を受け入れます
名前 | 型 | 説明 | タグ |
---|---|---|---|
env |
env | str | list [str ] | dict [str ] | dict [list [str ]] |
追加する |
|
最後に、meson.add_devenv()
は次のキーワード引数を受け入れます
名前 | 型 | 説明 | タグ |
---|---|---|---|
method |
str |
'set'、'prepend'、または'append'のいずれかである必要があります(デフォルトは'set')。最初の位置引数で定義された初期値が、環境変数の現在の値の前に追加されるか、後に追加されるか、または置き換えられるかを制御します。 |
(0.62.0以降) |
separator |
str |
最初の位置引数で定義された初期値に使用する区切り文字。明示的に指定しない場合、ホストオペレーティングシステムのデフォルトのパス区切り文字が使用されます。つまり、Windowsの場合は';'、UNIX/POSIXシステムの場合は':'です。 |
(0.62.0以降) |
meson.add_dist_script()
ディストリビューションソースが生成された後、アーカイブされる前に、dist
操作中に引数として指定されたスクリプトを実行させます。これは、ソースディレクトリではなく、ステージングディレクトリにあるスクリプトファイルを実行することに注意してください。ステージングディレクトリにスクリプトファイルが見つからない場合、それはハードエラーです。distスクリプトの実行時にMESON_DIST_ROOT
環境変数が設定されます。
(0.54.0以降) distスクリプトの実行時にMESON_SOURCE_ROOT
およびMESON_BUILD_ROOT
環境変数が設定されます。これらは、スクリプトがサブプロジェクトからのものであっても、メインプロジェクトのルートソースおよびビルドディレクトリへのパスです。
(0.58.0以降) このコマンドはサブプロジェクトから呼び出すことができます。以前のバージョンではハードエラーでした。サブプロジェクトのdistスクリプトは、meson dist --include-subprojects
を実行した場合にのみ実行されます。 distスクリプトの実行時に、MESON_PROJECT_SOURCE_ROOT
、MESON_PROJECT_BUILD_ROOT
、およびMESON_PROJECT_DIST_ROOT
環境変数が設定されます。これらは、メインプロジェクトスクリプトの場合はMESON_SOURCE_ROOT
、MESON_BUILD_ROOT
、およびMESON_DIST_ROOT
と同じですが、サブプロジェクトスクリプトの場合は、サブプロジェクトのルートへのパスが追加されます。通常はsubprojects/<サブプロジェクト名>
です。
(1.4.0以降) MESONREWRITE
環境変数には、ビルドを構成するために使用されたmeson
実行可能ファイルに対応する書き換えコマンドへのパスが含まれています。(これは、PATH
で見つかった最初の実行可能ファイルとは異なるパスである可能性があります。)ビルド構成からリビジョン管理システムに依存するrun_command()
を削除または置換するために使用できます。値には多くの部分が含まれることに注意してください。たとえば、python3 /path/to/meson.py introspect
になる場合があります。ユーザーは、UNIXシェルのように字句的に分割することにより、必要に応じて文字列を配列に分割する責任があります。スクリプトでPythonを使用する場合は、shlex.split()
がこれを実行する最も簡単な方法です。
シグネチャ
(0.48.0以降)
# Causes the script given as argument to run during `dist`
void add_dist_script(
str | file | external_program script_name, # The script to execute
str | file | external_program arg..., # Additional arguments
)
引数
メソッドmeson.add_dist_script()
は、次の位置引数を受け入れます
名前 | 型 | 説明 | タグ |
---|---|---|---|
script_name |
str | file | external_program |
実行するスクリプト。 (0.55.0以降) 文字列だけでなく、 (0.57.0以降) |
|
さらに、このメソッドは、型
の可変引数(str
| file
| external_program
arg...
)を0
から無限
まで受け入れます。
追加の引数
(0.55.0以降) 文字列だけでなく、configure_file()
、files()
、およびfind_program()
の出力も受け入れられます。
(0.49.0以降)
meson.add_install_script()
引数として指定されたスクリプトをインストールステップ中に実行させます。このスクリプトには、環境変数MESON_SOURCE_ROOT
、MESON_BUILD_ROOT
、MESON_INSTALL_PREFIX
、MESON_INSTALL_DESTDIR_PREFIX
、およびMESONINTROSPECT
が設定されます。すべての位置引数はパラメーターとして渡されます。
(0.54.0以降) meson install
が--quiet
オプション付きで呼び出された場合、環境変数MESON_INSTALL_QUIET
が設定されます。
(1.1.0以降) meson install
が--dry-run
オプション付きで呼び出された場合、環境変数MESON_INSTALL_DRY_RUN
が設定されます。
Mesonは、継承された環境によって設定されたDESTDIR
環境変数を使用して、ファイルの(一時的な)インストール場所を決定します。インストールスクリプトは、ファイルの操作とインストール中にこれを認識する必要があります。これを処理する正しい方法は、常に設定され、DESTDIR
(設定されている場合)とprefix
が結合されたMESON_INSTALL_DESTDIR_PREFIX
変数を使用することです。これは、両方が通常絶対パスであり、2つの絶対パスを結合する際にプラットフォーム固有のエッジケースがあるため、便利です。
必要な場合に備えて、MESON_INSTALL_PREFIX
も常に設定され、Mesonに渡されたprefix
オプションの値が設定されます。
MESONINTROSPECT
には、ビルドを構成するために使用されたmeson
実行可能ファイルに対応するイントロスペクトコマンドへのパスが含まれています。(これは、PATH
で見つかった最初の実行可能ファイルとは異なるパスである可能性があります。)ビルド構成を照会するために使用できます。値には多くの部分が含まれることに注意してください。たとえば、python3 /path/to/meson.py introspect
になる場合があります。ユーザーは、UNIXシェルのように字句的に分割することにより、必要に応じて文字列を配列に分割する責任があります。スクリプトでPythonを使用する場合は、shlex.split()
がこれを実行する最も簡単な方法です。
シグネチャ
# Causes the script given as an argument to be run during the install step,
void add_install_script(
str | file | external_program | exe | custom_tgt | custom_idx script_name, # The script to execute
str | file | external_program | exe | custom_tgt | custom_idx arg..., # Additional arguments
# Keyword arguments:
dry_run : bool # If `true` the script will be run even if `--dry-run` option is provided to
install_tag : str # A string used by the `meson install --tags` command
skip_if_destdir : bool # If `true` the script will not be run if DESTDIR is set during installation
)
引数
メソッドmeson.add_install_script()
は、次の位置引数を受け入れます
名前 | 型 | 説明 | タグ |
---|---|---|---|
script_name |
str | file | external_program | exe | custom_tgt | custom_idx |
実行するスクリプト。 (0.55.0以降) 文字列だけでなく、 (0.57.0以降) |
|
さらに、このメソッドは、型
の可変引数(str
| file
| external_program
| exe
| custom_tgt
| custom_idx
arg...
)を0
から無限
まで受け入れます。
追加の引数
(0.55.0以降) 文字列だけでなく、find_program()
、executable()
、custom_target()
の出力も受け入れられます。
(0.49.0以降)
最後に、meson.add_install_script()
は次のキーワード引数を受け入れます
名前 | 型 | 説明 | タグ |
---|---|---|---|
dry_run |
bool |
|
(1.1.0以降)
|
install_tag |
str |
ファイルのサブセットのみをインストールするために |
(0.60.0以降) |
skip_if_destdir |
bool |
|
(0.57.0以降)
|
meson.add_postconf_script()
すべてのプロジェクトファイルが生成された後に、指定されたコマンドを実行します。このスクリプトには、環境変数MESON_SOURCE_ROOT
およびMESON_BUILD_ROOT
が設定されます。
シグネチャ
# Runs the given command after all project files have been generated
void add_postconf_script(
str | file | external_program script_name, # The script to execute
str | file | external_program arg..., # Additional arguments
)
引数
メソッドmeson.add_postconf_script()
は、次の位置引数を受け入れます
名前 | 型 | 説明 | タグ |
---|---|---|---|
script_name |
str | file | external_program |
実行するスクリプト。 (0.55.0以降) 文字列だけでなく、 (0.57.0以降) |
|
さらに、このメソッドは、型
の可変引数(str
| file
| external_program
arg...
)を0
から無限
まで受け入れます。
追加の引数
(0.55.0以降) 文字列だけでなく、configure_file()
、files()
、およびfind_program()
の出力も受け入れられます。
(0.49.0以降)
meson.backend()
現在のバックエンドを表す文字列を返します
ninja
vs2010
vs2012
vs2013
vs2015
vs2017
vs2019
vs2022
xcode
シグネチャ
(0.37.0以降)
str backend()
meson.build_options()
現在のプロジェクトを設定するために使用された構成行を含む文字列を返します。
シグネチャ
(1.1.0以降)
str build_options()
この文字列を解析しようとしないでください!
cfg_data.set_quoted()
を使用して、Cヘッダーマクロなどに格納する前に、埋め込まれた引用符を安全にエスケープする必要があります。
この関数によって返される内容は、<builddir>/meson-logs/meson-log.txt
で報告される「Build Options:」行と同じです。
meson.build_root()
ビルドルートディレクトリへの絶対パスを含む文字列を返します。この関数は、サブプロジェクトから呼び出された場合、通常は必要なものではない、親プロジェクトのビルドルートを返します。meson.current_build_dir()
またはmeson.project_build_root()
を使用してみてください。メインプロジェクトのルートが必要なまれな場合は、同じ動作をしますが、より明示的な名前を持つmeson.global_build_root()
を使用します。
シグネチャ
非推奨
0.56.0で
str build_root()
meson.can_run_host_binaries()
ビルドマシンがホスト用にコンパイルされたバイナリを実行できる場合に true を返します。クロスコンパイルを行っている場合、ホストバイナリを実行するためのヘルパーが必要で、かつそのヘルパーがない場合を除き、true
を返します。たとえば、Linux から Windows へのクロスコンパイルの場合、ヘルパーとして wine
を使用できます。
シグネチャ
(0.55.0 以降)
bool can_run_host_binaries()
meson.current_build_dir()
現在のビルドディレクトリへの絶対パスを示す文字列を返します。
シグネチャ
str current_build_dir()
meson.current_source_dir()
現在のソースディレクトリへの文字列を返します。
シグネチャ
str current_source_dir()
この関数を使用する必要はありません!
現在のソースディレクトリから関数にファイルを渡す場合、それがデフォルトです。また、files()
関数を使用して、meson.current_source_dir()
を使って手動でパスを構築する代わりに、現在またはその他のソースディレクトリ内のファイルを参照できます。
meson.get_compiler()
compiler
オブジェクトを返します。これはコンパイラを記述するものです。
シグネチャ
# Returns a compiler
object describing a compiler.
compiler get_compiler(
str language, # The language of the compiler to return
# Keyword arguments:
native : bool # When set to `true` Meson returns the compiler for the build
)
引数
meson.get_compiler()
メソッドは、以下の位置引数を受け付けます。
名前 | 型 | 説明 | タグ |
---|---|---|---|
language |
str |
返されるコンパイラの言語。 サポートされている言語の一覧を参照してください。 |
|
最後に、meson.get_compiler()
は以下のキーワード引数を受け付けます。
名前 | 型 | 説明 | タグ |
---|---|---|---|
native |
bool |
|
|
meson.get_cross_property()
クロスファイルから指定されたプロパティを返します。オプションの fallback_value は、クロスコンパイルを行っていない場合、または指定されたプロパティが見つからない場合に返されます。
このメソッドは meson.get_external_property()
に置き換えられました。
シグネチャ
非推奨
0.58.0 で
# Returns the given property from a cross file, the optional fallback_value
any get_cross_property(
str propname, # Name of the property in the cross / native file
any [fallback_value], # Value to return if `propname` is not set in the machine file
)
引数
引数のフラット化はこの関数ではサポートされていません。
meson.get_cross_property()
メソッドは、以下の位置引数を受け付けます。
名前 | 型 | 説明 | タグ |
---|---|---|---|
propname |
str |
クロス/ネイティブファイル内のプロパティの名前。 |
|
fallback_value |
任意 |
|
[オプション] |
meson.get_external_property()
ネイティブファイルまたはクロスファイルから指定されたプロパティを返します。オプションの fallback_value は、指定されたプロパティが見つからない場合に返されます。
シグネチャ
(0.54.0 以降)
# Returns the given property from a native or cross file
any get_external_property(
str propname, # Name of the property in the cross / native file
any [fallback_value], # Value to return if `propname` is not set in the machine file
# Keyword arguments:
native : bool # Setting `native` to `true` forces retrieving a variable from the
)
引数
引数のフラット化はこの関数ではサポートされていません。
meson.get_external_property()
メソッドは、以下の位置引数を受け付けます。
名前 | 型 | 説明 | タグ |
---|---|---|---|
propname |
str |
クロス/ネイティブファイル内のプロパティの名前。 |
|
fallback_value |
任意 |
|
[オプション] |
最後に、meson.get_external_property()
は以下のキーワード引数を受け付けます。
名前 | 型 | 説明 | タグ |
---|---|---|---|
native |
bool |
|
|
meson.global_build_root()
ビルドルートディレクトリへの絶対パスを示す文字列を返します。この関数は、サブプロジェクトから呼び出された場合、通常は望ましくないメインプロジェクトのビルドルートを返します。通常は、meson.current_build_dir()
または meson.project_build_root()
を使用することをお勧めします。
シグネチャ
(0.58.0以降)
str global_build_root()
meson.global_source_root()
ソースルートディレクトリへの絶対パスを示す文字列を返します。この関数は、サブプロジェクトから呼び出された場合、通常は望ましくないメインプロジェクトのソースルートを返します。通常は、meson.current_source_dir()
または meson.project_source_root()
を使用することをお勧めします。
シグネチャ
(0.58.0以降)
str global_source_root()
meson.has_exe_wrapper()
代わりに meson.can_run_host_binaries()
を使用してください。
シグネチャ
非推奨
0.55.0 で
bool has_exe_wrapper()
meson.has_external_property()
指定されたプロパティがネイティブファイルまたはクロスファイルに存在するかどうかを確認します。
シグネチャ
(0.58.0以降)
# Checks whether the given property exist in a native or cross file
bool has_external_property(
str propname, # Name of the property in the cross / native file
# Keyword arguments:
native : bool # Setting `native` to `true` forces retrieving a variable from the
)
引数
meson.has_external_property()
メソッドは、以下の位置引数を受け付けます。
名前 | 型 | 説明 | タグ |
---|---|---|---|
propname |
str |
クロス/ネイティブファイル内のプロパティの名前。 |
|
最後に、meson.has_external_property()
は以下のキーワード引数を受け付けます。
名前 | 型 | 説明 | タグ |
---|---|---|---|
native |
bool |
|
|
meson.install_dependency_manifest()
すべてのサブプロジェクト、そのバージョン、およびライセンス名の一覧を含むマニフェストファイルを、引数として指定されたファイル名でインストールします。
ライセンスファイルも定義されている場合は、マニフェストの隣にコピーされ、マニフェスト内で参照されます。
この関数が使用されていない場合、組み込みオプション licensedir
を使用して、マニフェストを depmf.json
という名前で指定されたディレクトリにインストールできます。
シグネチャ
# Installs a manifest file
void install_dependency_manifest(
str output_name, # Name of the manifest file to install
)
引数
meson.install_dependency_manifest()
メソッドは、以下の位置引数を受け付けます。
名前 | 型 | 説明 | タグ |
---|---|---|---|
output_name |
str |
インストールするマニフェストファイルの名前 |
|
meson.is_cross_build()
現在のビルドが クロスビルド である場合は true
を返し、それ以外の場合は false
を返します。
シグネチャ
bool is_cross_build()
meson.is_subproject()
現在のプロジェクトが他のプロジェクトのサブプロジェクトとしてビルドされている場合は true
を返し、それ以外の場合は false
を返します。
シグネチャ
bool is_subproject()
meson.is_unity()
unity build (ビルド時間を短縮するために、コンパイル前に複数のソースが結合される) を行っている場合は true
を返し、それ以外の場合は false
を返します。
シグネチャ
bool is_unity()
meson.override_dependency()
name
を持つ dependency()
が使用されるたびに、Meson はシステム上でそれを検索するのではなく、代わりに dependency()
または declare_dependency()
の結果である可能性がある dep_object
を返すように指定します。
サブプロジェクトでこれを行うと、親プロジェクトは依存関係変数名を知らなくても、依存関係を取得できます:dependency(name, fallback : subproject_name)
。
シグネチャ
(0.54.0 以降)
# Specifies that whenever dependency()
with `name` is used, Meson should not
void override_dependency(
str name, # The name of the dependency to override
dep dep_object, # The dependency to set as the override for `name`
# Keyword arguments:
native : bool # If set to `true`, the dependency is always overwritten for the build machine
static : bool # Used to override static and/or shared dependencies separately
)
引数
meson.override_dependency()
メソッドは、以下の位置引数を受け付けます。
名前 | 型 | 説明 | タグ |
---|---|---|---|
name |
str |
オーバーライドする依存関係の名前。 |
|
dep_object |
dep |
|
|
最後に、meson.override_dependency()
は以下のキーワード引数を受け付けます。
名前 | 型 | 説明 | タグ |
---|---|---|---|
native |
bool |
|
|
static |
bool |
静的および/または共有依存関係を個別にオーバーライドするために使用されます。指定されていない場合、 |
(0.60.0以降) |
meson.override_find_program()
progname
という名前のプログラムを見つけるために find_program()
が使用されるたびに、Meson はシステム上でそれを検索するのではなく、代わりに find_program()
、configure_file()
、または executable()
の結果である可能性がある program
を返すように指定します。
(0.55.0 以降) 実行可能ファイルでオーバーライドされたプログラムに対して find_program()
にバージョンチェックが渡された場合、現在のプロジェクトバージョンが使用されます。
シグネチャ
(0.46.0 以降)
# specifies that whenever find_program()
is used to find a program
void override_find_program(
str progname, # The name of the program to override
exe | file | external_program program, # The program to set as the override for `progname`
)
引数
meson.override_find_program()
メソッドは、以下の位置引数を受け付けます。
名前 | 型 | 説明 | タグ |
---|---|---|---|
progname |
str |
オーバーライドするプログラムの名前。 |
|
program |
exe | file | external_program |
|
|
meson.project_build_root()
現在の(サブ)プロジェクトのビルドルートディレクトリへの絶対パスを示す文字列を返します。
シグネチャ
(0.56.0 以降)
str project_build_root()
meson.project_license()
project()
関数呼び出しで指定されたライセンスの配列を返します。
シグネチャ
(0.45.0 以降)
list[str] project_license()
meson.project_license_files()
project()
関数呼び出しで指定されたライセンスファイルの配列を返します。
シグネチャ
(1.1.0以降)
list[file] project_license_files()
meson.project_name()
project()
関数呼び出しで指定されたプロジェクト名を返します。
シグネチャ
str project_name()
meson.project_source_root()
現在の(サブ)プロジェクトのソースルートディレクトリへの絶対パスを示す文字列を返します。
シグネチャ
(0.56.0 以降)
str project_source_root()
meson.project_version()
project()
関数呼び出しで指定されたバージョン文字列を返します。
シグネチャ
str project_version()
meson.source_root()
ソースルートディレクトリへの絶対パスを示す文字列を返します。
この関数は、サブプロジェクトから呼び出された場合、通常は望ましくない親プロジェクトのソースルートを返します。 meson.current_source_dir()
または meson.project_source_root()
を使用してみてください。メインプロジェクトのルートが必要なまれなケースでは、同じ動作ですが、より明示的な名前を持つ meson.global_source_root()
を使用してください。
シグネチャ
非推奨
0.56.0で
str source_root()
meson.source_root()
を使用してパスを手動で構築する代わりに、ルートソースディレクトリ内のファイルを参照するには、files()
関数を使用する必要があります。
meson.version()
Meson のバージョンを示す文字列を返します。
シグネチャ
str version()
検索結果は次のとおりです。