参照テーブル

コンパイラID

これらは、コンパイラオブジェクトの `get_id`(コンパイラファミリ)メソッドと `get_argument_syntax`(引数構文)メソッドの戻り値です。

コンパイラファミリ 引数構文
arm ARMコンパイラ
armclang ARMCLANGコンパイラ
ccomp CompCert正式検証済みCコンパイラ
ccrx ルネサスRXファミリC/C++コンパイラ
clang Clangコンパイラ gcc
clang-cl Clangコンパイラ (MSVC互換ドライバ) msvc
dmd D言語リファレンスコンパイラ
emscripten Emscripten WASMコンパイラ
flang Classic Flang Fortranコンパイラ
g95 G95 Fortranコンパイラ
gcc GNUコンパイラコレクション gcc
intel Intelコンパイラ (LinuxおよびMac) gcc
intel-cl Intelコンパイラ (Windows) msvc
intel-llvm Intel oneAPI LLVMベースのコンパイラ
intel-llvm-cl Intel oneAPI LLVMベースのコンパイラ (Windows) msvc
lcc Elbrus C/C++/Fortranコンパイラ
llvm LLVMベースのコンパイラ (Swift、D)
llvm-flang Flang Fortranコンパイラ (LLVMベース)
mono Xamarin C#コンパイラ
mwccarm Metrowerks C/C++コンパイラ for Embedded ARM
mwcceppc Metrowerks C/C++コンパイラ for Embedded PowerPC
msvc Microsoft Visual Studio msvc
nagfor NAG Fortranコンパイラ
nvidia_hpc NVidia HPC SDKコンパイラ
nvcc NVidia CUDAコンパイラ
open64 Open64 Fortranコンパイラ
pathscale Pathscale Fortranコンパイラ
pgi Portland PGI C/C++/Fortranコンパイラ
rustc Rustコンパイラ
sun Sun Fortranコンパイラ
c2000 Texas Instruments C/C++コンパイラ (C2000)
c6000 Texas Instruments C/C++コンパイラ (C6000)
ti Texas Instruments C/C++コンパイラ
valac Valaコンパイラ
xc16 Microchip XC16 Cコンパイラ
cython Cythonコンパイラ
nasm NASMコンパイラ (0.64.0以降)
yasm YASMコンパイラ (0.64.0以降)
ml Microsoft Macro Assembler for x86 and x86_64 (0.64.0以降) msvc
armasm Microsoft Macro Assembler for ARM and AARCH64 (0.64.0以降)
mwasmarm Metrowerks Assembler for Embedded ARM
mwasmeppc Metrowerks Assembler for Embedded PowerPC

リンカID

これらは、コンパイラオブジェクトの `get_linker_id` メソッドの戻り値です。

リンカファミリ
ld.bfd GNUリンカ
ld.gold GNU goldリンカ
ld.lld LLVMリンカ (GNUインターフェース)
ld.mold 高速MOLDリンカ
ld.solaris Solarisおよびillumos
ld.wasm emscriptenのwasm-ldリンカ
ld.zigcc Zigリンカ (C/C++フロントエンド; GNUライク)
ld64 Apple ld64
ld64.lld LLVMリンカ (ld64インターフェース)
link MSVCリンカ
lld-link LLVMリンカ (MSVCインターフェース)
xilink Intel-clのみで使用、MSVCライク
optlink optlink (DMDで使用)
rlink ルネサスリンカ、CCrxのみで使用
xc16-ar Microchipリンカ、XC16のみで使用
ar2000 Texas Instrumentsリンカ、C2000のみで使用
ti-ar Texas Instrumentsリンカ
ar6000 Texas Instrumentsリンカ、C6000のみで使用
armlink ARMリンカ (armおよびarmclangコンパイラ)
pgi Portland/Nvidia PGI
nvlink Nvidiaリンカ、cudaで使用
ccomp リンカドライバとして使用されるCompCert
mwldarm Metrowerksリンカ (ARMインターフェース)、mwccarmのみで使用
mwldeppc Metrowerksリンカ (PowerPCインターフェース)、mwcceppcのみで使用

C#やJavaのように、個別の動的リンカを持たない言語の場合、`get_linker_id`はコンパイラ名を返します。

スクリプト環境変数

コメント
MESONINTROSPECT イントロスペクションコマンドを実行するためのコマンド。 `python /path/to/meson introspect` の形式である場合があります。パスを分割する必要がある場合は、ユーザーが責任を負います。
MESONREWRITE 書き換えコマンドを実行するためのコマンド。 `dist` スクリプトを実行する場合にのみ設定されます。
MESON_BUILD_ROOT ビルドディレクトリへの絶対パス
MESON_DIST_ROOT ステージングディレクトリのルートを指します。 `dist` スクリプトを実行する場合にのみ設定されます。
MESON_SOURCE_ROOT ソースディレクトリへの絶対パス
MESON_SUBDIR 現在のサブディレクトリ。 `run_command` の場合にのみ設定されます。

CPUファミリ

これらは、`build_machine`、`host_machine`、および`target_machine`の `cpu_family` メソッドによって返されます。クロスコンパイルの場合は、クロスファイルで設定されます。

コメント
aarch64 64ビットARMプロセッサ
alpha DEC Alphaプロセッサ
arc 32ビットARCプロセッサ
arm 32ビットARMプロセッサ
avr Atmel AVRプロセッサ
c2000 32ビットC2000プロセッサ
c6000 32ビットC6000プロセッサ
csky 32ビットCSkyプロセッサ
dspic 16ビットMicrochip dsPIC
e2k MCST Elbrusプロセッサ
ft32 32ビットBridgetek MCU
ia64 Itaniumプロセッサ
loongarch64 64ビットLoongsonプロセッサ
m68k Motorola 68000プロセッサ
microblaze MicroBlazeプロセッサ
mips 32ビットMIPSプロセッサ
mips64 64ビットMIPSプロセッサ
msp430 16ビットMSP430プロセッサ
parisc HP PA-RISCプロセッサ
pic24 16ビットMicrochip PIC24
ppc 32ビットPPCプロセッサ
ppc64 64ビットPPCプロセッサ
riscv32 32ビットRISC-V Open ISA
riscv64 64ビットRISC-V Open ISA
rl78 ルネサスRL78
rx ルネサスRX 32ビットMCU
s390 IBM zSystem s390
s390x IBM zSystem s390x
sh4 SuperH SH-4
sparc 32ビットSPARC
sparc64 SPARC v9プロセッサ
sw_64 64ビットsunwayプロセッサ
wasm32 32ビットWebAssembly
wasm64 64ビットWebAssembly
x86 32ビットx86プロセッサ
x86_64 64ビットx86プロセッサ

上記のリストにないCPUファミリは、将来のリリースで安定性が保証されません。

autotoolsからの移植を行う場合は、MesonはCPUファミリの名前にエンディアンを追加しないことに注意してください。たとえば、autotoolsはリトルエンディアンPPC64を「ppc64le」と呼びますが、Mesonは呼びません。この情報については、マシンの`.endian()`値も確認する必要があります。

オペレーティングシステム名

これらは、`.system()`メソッド呼び出しによって提供されます。

コメント
android 慣例のみ。変更される可能性があります。
cygwin Windows上のCygwinまたはMSYS2環境
darwin OSXまたはiOS
dragonfly DragonFly BSD
emscripten EmscriptenのJavaScript環境
freebsd FreeBSDとその派生物
gnu GNU Hurd
haiku
linux
netbsd
openbsd
windows ネイティブWindows (CygwinまたはMSYS2ではない)
sunos illumosおよびSolaris

上記にリストされていない文字列は、将来のリリースで安定性が保証されません。

カーネル名 (1.2.0以降)

`.kernel()`メソッドによって返されるネイティブ名。

コメント
linux
freebsd
openbsd
netbsd
gnu GNU Hurd
nt
xnu さまざまなApple OSのカーネル
illumos コミュニティの努力によってOpenSolarisから派生したカーネル
solaris OracleによってOpenSolarisから派生したカーネル
dragonfly
haiku
none たとえば、ベアメタル組み込み向け

サブシステム名 (1.2.0以降)

対象システムのより具体的な説明。ほとんどの値は、Mesonをネイティブに実行できないため、クロスファイルでのみ使用することを意図しています。

コメント
macos Apple macOS (旧OSX)
ios Apple iOS
ios-simulator
tvos Apple tvOS
tvos-simulator
watchos Apple watchOS
watchos-simulator

言語引数パラメータ名

ビルドターゲットに言語固有の引数を渡すためのパラメータ名です。

言語 コンパイラ名 リンカ名
C c_args c_link_args
C++ cpp_args cpp_link_args
C# cs_args cs_link_args
CUDA cuda_args cuda_link_args
D d_args d_link_args
Fortran fortran_args fortran_link_args
Java java_args java_link_args
Objective C objc_args objc_link_args
Objective C++ objcpp_args objcpp_link_args
Rust rust_args rust_link_args
Vala vala_args vala_link_args
Cython cython_args cython_link_args
NASM nasm_args 該当なし
MASM masm_args 該当なし

これらの `<lang>_*` オプションはすべて、マシンごとに指定されます。クロスビルドでの方法については、マシンごとのオプションの指定を参照してください。

コンパイラとリンカのフラグ環境変数

これらの環境変数は、コンパイラとリンカのフラグを変更するために使用されます。

**これらを使用しない**ことをお勧めします。これらは、他のビルドシステムとの後方互換性のためにのみ提供されています。これらの使用には、特にプロジェクトを再構築する場合に、多くの注意点があります。代わりにコマンドライン引数を使用することを**強く**お勧めします。

名前 コメント
CFLAGS Cコンパイラのフラグ
CXXFLAGS C++コンパイラのフラグ
CUFLAGS CUDAコンパイラのフラグ
OBJCFLAGS Objective Cコンパイラーのフラグ
FFLAGS Fortranコンパイラーのフラグ
DFLAGS Dコンパイラーのフラグ
VALAFLAGS Valaコンパイラーのフラグ
RUSTFLAGS Rustコンパイラーのフラグ
CYTHONFLAGS Cythonコンパイラーのフラグ
LDFLAGS リンカーフラグ。すべての言語で使用されます。

注:これらの設定はマシンごとに指定されるため、環境変数は実際にはペアで提供されます。詳細は、マシンごとの環境変数セクションを参照してください。

関数属性

compiler.has_function_attribute()またはcompiler.get_supported_function_attributes()を使用してサポートされているパラメーター名です。

GCC __attribute__

これらの値は、GCC、Clang、およびその他のコンパイラーでサポートされているGCCスタイルの__attribute__アノテーションを使用してサポートされています。

名前
alias
aligned
alloc_size
always_inline
artificial
cold
const
constructor
constructor_priority
deprecated
destructor
error
externally_visible
fallthrough
flatten
format
format_arg
force_align_arg_pointer³
gnu_inline
hot
ifunc
malloc
noclone
noinline
nonnull
noreturn
nothrow
null_terminated_string_arg⁷
optimize
packed
pure
retain⁴
returns_nonnull
section⁵
sentinel⁵
unused
used
vector_size⁶
visibility*
visibility:default†
visibility:hidden†
visibility:internal†
visibility:protected†
warning
warn_unused_result
weak
weakref

* *0.52.0 で変更* "visibility" ターゲットには、Apple の clang に存在しない "protected" が含まれなくなりました。

† *0.52.0 で追加* これらの分割された可視性属性は、より狭いチェックを提供するため、単純な "visibility" よりも推奨されます。

³ *0.55.0 で追加*

⁴ *0.62.0 で追加*

⁵ *0.63.0 で追加*

⁶ *1.1.0 で追加*

⁷ *1.5.0 で追加*

MSVC __declspec

これらの値は、MSVC、GCC、Clang、およびその他のコンパイラーでサポートされている MSVC スタイルの __declspec アノテーションを使用してサポートされています。

名前
dllexport
dllimport

依存関係の検索方法

これらは、`dependency` 関数の `method` キーワード引数に渡すことができる値です。

名前 コメント
auto 自動メソッド選択
pkg-config Pkg-Config を使用する
cmake CMake モジュールとして検索する
config-tool `cups-config` などのカスタム依存ツールを使用する
system システム提供 (例:OpenGL)
extraframework macOS/iOS フレームワーク

コンパイラとリンカーの選択変数

注:これらの設定はマシンごとに指定されるため、環境変数は実際にはペアで提供されます。詳細は、マシンごとの環境変数セクションを参照してください。

言語 コンパイラ リンカー 注記
C CC CC_LD
C++ CXX CXX_LD
D DC DC_LD 0.54 より前は D_LD*
Fortran FC FC_LD 0.54 より前は F_LD*
Objective-C OBJC OBJC_LD
Objective-C++ OBJCXX OBJCXX_LD 0.54 より前は OBJCPP_LD*
Rust RUSTC RUSTC_LD 0.54 より前は RUST_LD*
Vala VALAC CC_LD を使用します。 Vala は C にトランスパイルされます
C# CSC CSC リンカーはコンパイラです
Cython CYTHON
nasm NASM C リンカーを使用します

*古い環境変数は引き続きサポートされていますが、非推奨となっており、Meson の将来のバージョンで削除される予定です。

*1.3.0 で変更* スペースを含むパスは、Ccache へのパス、`-m32` や `--target` などの組み込みコンパイラフラグなどを抽出するために無条件に分割されました。これは、ハードコードされたコンパイラパスを CMake サブプロジェクトに渡すことを妨げました。これを回避するには、パスを二重引用符で囲む必要があります

export CC='"C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.34.31933/bin/Hostx64/x64/cl.exe"'

マシンファイルを使用して値を設定することもできます。

*1.3.0 で追加* 既存の実行可能ファイルを指すパスは、ラップする必要がなくなりました

export CC='C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.34.31933/bin/Hostx64/x64/cl.exe'

マシンごとの環境変数

*0.54.0* 以降、Autotool やその他のレガシービルドシステムに倣い、マシン固有の設定に影響を与える環境変数はペアで提供されます。すべてのベア環境変数 `FOO` に対して、接尾辞付きの `FOO_FOR_BUILD` があります。`FOO` はホストマシンの構成にのみ影響を与え、`FOO_FOR_BUILD` はビルドマシンの構成にのみ影響を与えます。例えば

  • `PKG_CONFIG_PATH_FOR_BUILD` は、pkg-config が `native: true` の依存関係 (ビルドマシン) のみを検索するパスを制御します。

  • `PKG_CONFIG_PATH` は、pkg-config が `native: false` の依存関係 (ホストマシン) のみを検索するパスを制御します。

これは、(組み込みの) Meson オプションに使用される `build.` プレフィックスを反映しており、同じ意味を持ちます。

これはクロスビルドに役立ちます。ネイティブビルドでは、build = host であり、接尾辞のない環境変数だけで十分です。

*0.54.0* より前には、`_FOR_BUILD` 接尾辞付きの変数はなく、ほとんどの環境変数はネイティブマシンの構成にのみ影響を与えましたが、これは一貫していませんでした (たとえば、`PKG_CONFIG_PATH` はクロスビルドにも影響を与えていました)。

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