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]]

追加するenvオブジェクト。0.62.0以降、文字列のリストを辞書の値として使用できます。その場合、値は区切り文字を使用して結合されます。

最後に、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_ROOTMESON_PROJECT_BUILD_ROOT、およびMESON_PROJECT_DIST_ROOT環境変数が設定されます。これらは、メインプロジェクトスクリプトの場合はMESON_SOURCE_ROOTMESON_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以降) 文字列だけでなく、find_program()の出力も受け入れられます。

(0.57.0以降) fileオブジェクトとconfigure_file()の出力を使用できます。

さらに、このメソッドは、型str | file | external_programの可変引数(arg...)を0から無限まで受け入れます。

追加の引数

(0.55.0以降) 文字列だけでなく、configure_file()files()、およびfind_program()の出力も受け入れられます。

(0.49.0以降)


meson.add_install_script()

引数として指定されたスクリプトをインストールステップ中に実行させます。このスクリプトには、環境変数MESON_SOURCE_ROOTMESON_BUILD_ROOTMESON_INSTALL_PREFIXMESON_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以降) 文字列だけでなく、find_program()executable()custom_target()の出力も受け入れられます。

(0.57.0以降) fileオブジェクトとconfigure_file()の出力を使用できます。

さらに、このメソッドは、型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

trueの場合、meson installコマンドに--dry-runオプションが指定されていてもスクリプトは実行されます。スクリプトは、MESON_INSTALL_DRY_RUN変数を使用して、ドライランモードであるかどうかを判断できます。

(1.1.0以降)

デフォルト = false

install_tag str

ファイルのサブセットのみをインストールするためにmeson install --tagsコマンドで使用される文字列。デフォルトでは、スクリプトにはインストールタグがないため、meson install --tags引数が指定された場合、実行されません。

(0.60.0以降)

skip_if_destdir bool

trueの場合、インストール中にDESTDIRが設定されていると、スクリプトは実行されません。これは、ファイルが最終的な場所にコピーされる場合にのみ必要な、システム全体のキャッシュを更新するスクリプトの場合に役立ちます。

(0.57.0以降)

デフォルト = false


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以降) 文字列だけでなく、find_program()の出力も受け入れられます。

(0.57.0以降) fileオブジェクトとconfigure_file()の出力を使用できます。

さらに、このメソッドは、型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

true に設定すると、Meson はビルドマシン (「ネイティブ」コンパイラ) のコンパイラを返し、false に設定すると、ホストコンパイラ (「クロス」コンパイラ) を返します。native が省略された場合、Meson は現在クロスコンパイルを行っている場合は「クロス」コンパイラを返し、そうでない場合は「ネイティブ」コンパイラを返します。

デフォルト = false


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 任意

propname がマシンファイルで設定されていない場合に返す値。

[オプション]


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 任意

propname がマシンファイルで設定されていない場合に返す値。

[オプション]

最後に、meson.get_external_property() は以下のキーワード引数を受け付けます。

名前 説明 タグ
native bool

nativetrue に設定すると、クロスコンパイル時でもネイティブファイルから変数を強制的に取得します。native: false または指定されていない場合、変数はクロスコンパイル時にはクロスファイルから取得され、クロスコンパイルでない場合はネイティブファイルから取得されます。


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

nativetrue に設定すると、クロスコンパイル時でもネイティブファイルから変数を強制的に取得します。native: false または指定されていない場合、変数はクロスコンパイル時にはクロスファイルから取得され、クロスコンパイルでない場合はネイティブファイルから取得されます。


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

name のオーバーライドとして設定する依存関係。

最後に、meson.override_dependency() は以下のキーワード引数を受け付けます。

名前 説明 タグ
native bool

true に設定すると、依存関係は常にビルドマシンに対して上書きされます。そうでない場合、依存関係はホストマシンに対して上書きされます。これは、クロスコンパイル時にビルドマシンとは異なります。

デフォルト = false

static bool

静的および/または共有依存関係を個別にオーバーライドするために使用されます。指定されていない場合、dep_objectdefault_library オプション値に従うと想定されます。

(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

progname のオーバーライドとして設定するプログラム。


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()


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