參考表格

編譯器 ID

這些是編譯器物件中 `get_id` (編譯器家族) 和 `get_argument_syntax` (引數語法) 方法的回傳值。

編譯器家族 引數語法
arm ARM 編譯器
armclang ARMCLANG 編譯器
ccomp CompCert 形式驗證 C 編譯器
ccrx Renesas RX 系列 C/C++ 編譯器
clang Clang 編譯器 gcc
clang-cl Clang 編譯器 (MSVC 相容驅動程式) msvc
dmd D 語言參考編譯器
emscripten Emscripten WASM 編譯器
flang 傳統 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 用於嵌入式 ARM 的 Metrowerks C/C++ 編譯器
mwcceppc 用於嵌入式 PowerPC 的 Metrowerks C/C++ 編譯器
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 德州儀器 C/C++ 編譯器 (C2000)
c6000 德州儀器 C/C++ 編譯器 (C6000)
ti 德州儀器 C/C++ 編譯器
valac Vala 編譯器
xc16 Microchip XC16 C 編譯器
cython Cython 編譯器
nasm NASM 編譯器 (自 0.64.0 起)
yasm YASM 編譯器 (自 0.64.0 起)
ml 適用於 x86 和 x86_64 的 Microsoft 巨集組譯器 (自 0.64.0 起) msvc
armasm 適用於 ARM 和 AARCH64 的 Microsoft 巨集組譯器 (自 0.64.0 起)
mwasmarm 用於嵌入式 ARM 的 Metrowerks 組譯器
mwasmeppc 用於嵌入式 PowerPC 的 Metrowerks 組譯器

連結器 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 Renesas 連結器,僅用於 CCrx
xc16-ar Microchip 連結器,僅用於 XC16
ar2000 德州儀器連結器,僅用於 C2000
ti-ar 德州儀器連結器
ar6000 德州儀器連結器,僅用於 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 位元龍芯處理器
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 開放 ISA
riscv64 64 位元 RISC-V 開放 ISA
rl78 Renesas RL78
rx Renesas RX 32 位元 MCU
s390 IBM zSystem s390
s390x IBM zSystem s390x
sh4 SuperH SH-4
sparc 32 位元 SPARC
sparc64 SPARC v9 處理器
sw_64 64 位元申威處理器
wasm32 32 位元 Webassembly
wasm64 64 位元 Webassembly
x86 32 位元 x86 處理器
x86_64 64 位元 x86 處理器

未在上述清單中列出的任何 CPU 家族都不能保證在未來版本中保持穩定。

從 autotools 移植的人應該注意,Meson 不會在 cpu_family 的名稱中新增位元組順序。例如,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 風格的 __attribute__ 註釋,GCC、Clang 和其他編譯器都支援這些註釋。

名稱
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」目標不再包含「protected」,因為 Apple 的 clang 中沒有這個屬性。

0.52.0 版新增。這些分割的 visibility 屬性比普通的「visibility」更為偏好,因為它們提供了更窄的檢查。

³ 0.55.0 版新增

0.62.0 版新增

0.63.0 版新增

1.1.0 版新增

1.5.0 版新增

MSVC __declspec

這些值支援使用 MSVC 風格的 __declspec 註釋,MSVC、GCC、Clang 和其他編譯器都支援這些註釋。

名稱
dllexport
dllimport

相依性查找方法

這些是可以傳遞給 dependency 函式的 method 關鍵字引數的值。

名稱 註解
auto 自動方法選擇
pkg-config 使用 Pkg-Config
cmake 作為 CMake 模組查找
config-tool 使用自訂的 dep 工具,例如 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 仍然會影響交叉建置)。

搜尋結果為