參考表格
編譯器 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
仍然會影響交叉建置)。
搜尋結果為