Referenztabellen

Compiler-IDs

Dies sind Rückgabewerte der Methoden get_id (Compilerfamilie) und get_argument_syntax (Argument-Syntax) eines Compilerobjekts.

Wert Compilerfamilie Argument-Syntax
arm ARM Compiler
armclang ARMCLANG Compiler
ccomp Der formal verifizierte C-Compiler CompCert
ccrx Renesas RX Family C/C++ Compiler
clang Der Clang Compiler gcc
clang-cl Der Clang Compiler (MSVC-kompatibler Treiber) msvc
dmd D lang Referenzcompiler
emscripten Emscripten WASM Compiler
flang Klassischer Flang Fortran Compiler
g95 Der G95 Fortran Compiler
gcc Die GNU Compiler Collection gcc
intel Intel Compiler (Linux und Mac) gcc
intel-cl Intel Compiler (Windows) msvc
intel-llvm Intel oneAPI LLVM-basierter Compiler
intel-llvm-cl Intel oneAPI LLVM-basierter Compiler (Windows) msvc
lcc Elbrus C/C++/Fortran Compiler
llvm LLVM-basierter Compiler (Swift, D)
llvm-flang Flang Fortran Compiler (LLVM-basiert)
mono Xamarin C# Compiler
mwccarm Metrowerks C/C++ Compiler für Embedded ARM
mwcceppc Metrowerks C/C++ Compiler für Embedded PowerPC
msvc Microsoft Visual Studio msvc
nagfor Der NAG Fortran Compiler
nvidia_hpc NVidia HPC SDK Compiler
nvcc NVidia CUDA Compiler
open64 Der Open64 Fortran Compiler
pathscale Der Pathscale Fortran Compiler
pgi Portland PGI C/C++/Fortran Compiler
rustc Rust Compiler
sun Sun Fortran Compiler
c2000 Texas Instruments C/C++ Compiler (C2000)
c6000 Texas Instruments C/C++ Compiler (C6000)
ti Texas Instruments C/C++ Compiler
valac Vala Compiler
xc16 Microchip XC16 C Compiler
cython Der Cython Compiler
nasm Der NASM Compiler (Seit 0.64.0)
yasm Der YASM Compiler (Seit 0.64.0)
ml Microsoft Macro Assembler für x86 und x86_64 (Seit 0.64.0) msvc
armasm Microsoft Macro Assembler für ARM und AARCH64 (Seit 0.64.0)
mwasmarm Metrowerks Assembler für Embedded ARM
mwasmeppc Metrowerks Assembler für Embedded PowerPC

Linker-IDs

Dies sind Rückgabewerte der Methode get_linker_id eines Compilerobjekts.

Wert Linkerfamilie
ld.bfd Der GNU Linker
ld.gold Der GNU gold Linker
ld.lld Der LLVM Linker mit der GNU-Schnittstelle
ld.mold Der schnelle MOLD Linker
ld.solaris Solaris und illumos
ld.wasm Emscriptens wasm-ld Linker
ld.zigcc Der Zig Linker (C/C++ Frontend; GNU-artig)
ld64 Apple ld64
ld64.lld Der LLVM Linker mit der ld64-Schnittstelle
link MSVC Linker
lld-link Der LLVM Linker mit der MSVC-Schnittstelle
xilink Wird nur mit Intel-cl verwendet, MSVC-artig
optlink optlink (verwendet mit DMD)
rlink Der Renesas Linker, verwendet nur mit CCrx
xc16-ar Der Microchip Linker, verwendet nur mit XC16
ar2000 Der Texas Instruments Linker, verwendet nur mit C2000
ti-ar Der Texas Instruments Linker
ar6000 Der Texas Instruments Linker, verwendet nur mit C6000
armlink Der ARM Linker (arm- und armclang-Compiler)
pgi Portland/Nvidia PGI
nvlink Nvidia Linker, verwendet mit CUDA
ccomp CompCert als Linkertreiber verwendet
mwldarm Der Metrowerks Linker mit der ARM-Schnittstelle, verwendet nur mit mwccarm
mwldeppc Der Metrowerks Linker mit der PowerPC-Schnittstelle, verwendet nur mit mwcceppc

Für Sprachen, die keine separaten dynamischen Linker haben, wie C# und Java, gibt get_linker_id den Compilernamen zurück.

Skriptumgebungsvariablen

Wert Kommentar
MESONINTROSPECT Befehl zum Ausführen des Introspektionsbefehls, kann die Form python /path/to/meson introspect haben, der Benutzer ist dafür verantwortlich, den Pfad bei Bedarf zu splitten.
MESONREWRITE Befehl zum Ausführen des Umschreibbefehls, nur gesetzt, wenn dist-Skripte ausgeführt werden
MESON_BUILD_ROOT Absoluter Pfad zum Build-Verzeichnis
MESON_DIST_ROOT Zeigt auf das Stammverzeichnis des Staging-Verzeichnisses, nur gesetzt, wenn dist-Skripte ausgeführt werden
MESON_SOURCE_ROOT Absoluter Pfad zum Quellverzeichnis
MESON_SUBDIR Aktuelles Unterverzeichnis, nur gesetzt für run_command

CPU-Familien

Diese werden von der Methode cpu_family von build_machine, host_machine und target_machine zurückgegeben. Für Cross-Kompilierung sind sie in der Cross-Datei gesetzt.

Wert Kommentar
aarch64 64-Bit ARM-Prozessor
alpha DEC Alpha Prozessor
arc 32-Bit ARC-Prozessor
arm 32-Bit ARM-Prozessor
avr Atmel AVR Prozessor
c2000 32-Bit C2000-Prozessor
c6000 32-Bit C6000-Prozessor
csky 32-Bit CSky-Prozessor
dspic 16-Bit Microchip dsPIC
e2k MCST Elbrus Prozessor
ft32 32-Bit Bridgetek MCU
ia64 Itanium Prozessor
loongarch64 64-Bit Loongson Prozessor
m68k Motorola 68000 Prozessor
microblaze MicroBlaze Prozessor
mips 32-Bit MIPS-Prozessor
mips64 64-Bit MIPS-Prozessor
msp430 16-Bit MSP430-Prozessor
parisc HP PA-RISC Prozessor
pic24 16-Bit Microchip PIC24
ppc 32-Bit PPC-Prozessoren
ppc64 64-Bit PPC-Prozessoren
riscv32 32-Bit RISC-V Open ISA
riscv64 64-Bit RISC-V Open ISA
rl78 Renesas RL78
rx Renesas RX 32-Bit MCU
s390 IBM zSystem s390
s390x IBM zSystem s390x
sh4 SuperH SH-4
sparc 32-Bit SPARC
sparc64 SPARC v9 Prozessor
sw_64 64-Bit Sunway Prozessor
wasm32 32-Bit Webassembly
wasm64 64-Bit Webassembly
x86 32-Bit x86-Prozessor
x86_64 64-Bit x86-Prozessor

Für CPU-Familien, die nicht in der obigen Liste aufgeführt sind, kann keine Stabilität in zukünftigen Versionen garantiert werden.

Wer von Autotools portiert, sollte beachten, dass Meson keine Endianness zum Namen der CPU-Familie hinzufügt. Zum Beispiel werden bei Autotools Little-Endian-PPC64 als "ppc64le" bezeichnet, Meson tut dies nicht; Sie müssen auch den Wert von .endian() der Maschine für diese Informationen überprüfen.

Betriebssystemnamen

Diese werden durch den Methodenaufruf .system() bereitgestellt.

Wert Kommentar
android Nur nach Konvention, kann sich ändern
cygwin Cygwin oder MSYS2-Umgebung unter Windows
darwin Entweder OSX oder iOS
dragonfly DragonFly BSD
emscripten Emscriptens JavaScript-Umgebung
freebsd FreeBSD und seine Derivate
gnu GNU Hurd
haiku
linux
netbsd
openbsd
windows Natives Windows (nicht Cygwin oder MSYS2)
sunos illumos und Solaris

Für Zeichenfolgen, die nicht oben aufgeführt sind, kann keine Stabilität in zukünftigen Versionen garantiert werden.

Kernelnamen (seit 1.2.0)

Native Namen, wie sie von der Methode .kernel() zurückgegeben werden.

Wert Kommentar
linux
freebsd
openbsd
netbsd
gnu GNU Hurd
nt
xnu Kernel verschiedener Apple-Betriebssysteme
illumos Kernel, der von OpenSolaris durch Community-Bemühungen abgeleitet ist
solaris Kernel, der von OpenSolaris durch Oracle abgeleitet ist
dragonfly
haiku
none Zum Beispiel für Bare-Metal-Embedded

Subsystemnamen (seit 1.2.0)

Eine spezifischere Beschreibung des betreffenden Systems. Die meisten Werte sind nur für Cross-Dateien gedacht, da diese Plattformen Meson nicht nativ ausführen können.

Wert Kommentar
macos Apple macOS (früher OSX)
ios Apple iOS
ios-simulator
tvos Apple tvOS
tvos-simulator
watchos Apple watchOS
watchos-simulator

Parameternamen für Sprachargumente

Dies sind die Parameternamen für die Übergabe sprachspezifischer Argumente an Ihr Build-Ziel.

Sprache Compilername Linkername
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 N/A
MASM masm_args N/A

Alle diese <lang>_* Optionen werden pro Maschine angegeben. Siehe unter Spezifizieren von Optionen pro Maschine, wie dies bei Cross-Builds zu tun ist.

Compiler- und Linkerflaggen-Umgebungsvariablen

Diese Umgebungsvariablen werden verwendet, um die Compiler- und Linkerflaggen zu modifizieren.

Es wird **nicht empfohlen, diese zu verwenden**. Sie werden ausschließlich zur Rückwärtskompatibilität mit anderen Build-Systemen bereitgestellt. Es gibt viele Vorbehalte bei ihrer Verwendung, insbesondere beim Neuaufbau des Projekts. Es wird **dringend** empfohlen, stattdessen die Kommandozeilenargumente zu verwenden.

Name Kommentar
CFLAGS Flags für den C-Compiler
CXXFLAGS Flags für den C++-Compiler
CUFLAGS Flags für den CUDA-Compiler
OBJCFLAGS Flags für den Objective C-Compiler
FFLAGS Flags für den Fortran-Compiler
DFLAGS Flags für den D-Compiler
VALAFLAGS Flags für den Vala-Compiler
RUSTFLAGS Flags für den Rust-Compiler
CYTHONFLAGS Flags für den Cython-Compiler
LDFLAGS Die Linker-Flags, die für alle Sprachen verwendet werden

Hinweis: Diese Einstellungen werden pro Maschine spezifiziert, und die Umgebungsvariablen kommen tatsächlich paarweise vor. Siehe den Abschnitt Umgebungsvariablen pro Maschine für Details.

Funktionsattribute

Dies sind die Parameternamen, die mit compiler.has_function_attribute() oder compiler.get_supported_function_attributes() unterstützt werden.

GCC __attribute__

Diese Werte werden mit GCC-artigen __attribute__-Annotationen unterstützt, die von GCC, Clang und anderen Compilern unterstützt werden.

Name
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

* Geändert in 0.52.0 Das "visibility"-Ziel schließt "protected" nicht mehr ein, das in Apples Clang nicht vorhanden ist.

Neu in 0.52.0 Diese aufgeteilten Sichtbarkeitsattribute werden gegenüber dem einfachen "visibility" bevorzugt, da sie engere Prüfungen ermöglichen.

³ Neu in 0.55.0

Neu in 0.62.0

Neu in 0.63.0

Neu in 1.1.0

Neu in 1.5.0

MSVC __declspec

Diese Werte werden mit MSVC-artigen __declspec-Annotationen unterstützt, die von MSVC, GCC, Clang und anderen Compilern unterstützt werden.

Name
dllexport
dllimport

Abfragemethoden für Abhängigkeiten

Dies sind die Werte, die an das Schlüsselwort method der Funktion dependency übergeben werden können.

Name Kommentar
auto Automatische Methodenauswahl
pkg-config Nutze Pkg-Config
cmake Als CMake-Modul nachschlagen
config-tool Verwende ein benutzerdefiniertes Dep-Tool wie cups-config
system Systembereitgestellt (z.B. OpenGL)
extraframework Ein macOS/iOS-Framework

Variablen zur Auswahl von Compiler und Linker

Hinweis: Diese Einstellungen werden pro Maschine spezifiziert, und die Umgebungsvariablen kommen tatsächlich paarweise vor. Siehe den Abschnitt Umgebungsvariablen pro Maschine für Details.

Sprache Compiler Linker Hinweis
C CC CC_LD
C++ CXX CXX_LD
D DC DC_LD Vor 0.54 D_LD*
Fortran FC FC_LD Vor 0.54 F_LD*
Objective-C OBJC OBJC_LD
Objective-C++ OBJCXX OBJCXX_LD Vor 0.54 OBJCPP_LD*
Rust RUSTC RUSTC_LD Vor 0.54 RUST_LD*
Vala VALAC Verwendet CC_LD. Vala wird nach C transpilliert
C# CSC CSC Der Linker ist der Compiler
Cython CYTHON
nasm NASM Verwendet den C-Linker

*Die alten Umgebungsvariablen werden immer noch unterstützt, sind aber veraltet und werden in einer zukünftigen Version von Meson entfernt.

Geändert in 1.3.0 Pfade mit Leerzeichen wurden bedingungslos aufgeteilt, um Komponenten wie den Pfad zu Ccache, intrinsische Compilerflags wie -m32 oder --target usw. zu extrahieren. Dies brach die Übergabe eines fest codierten Compilerpfads an CMake-Unterprojekte. Um dies zu umgehen, müssen Pfade in doppelte Anführungszeichen gesetzt werden.

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

Sie können die Werte auch über Maschinen-Dateien setzen.

Neu in 1.3.0 Pfade, die auf eine vorhandene ausführbare Datei zeigen, müssen nicht mehr umschlossen werden.

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

Umgebungsvariablen pro Maschine

Seit 0.54.0 folgen Umgebungsvariablen, die maschinenspezifische Einstellungen beeinflussen, wie Autotools und andere Legacy-Build-Systeme, Paaren: Für jede leere Umgebungsvariable FOO gibt es eine mit dem Suffix FOO_FOR_BUILD, wobei FOO nur die Host-Maschinenkonfiguration beeinflusst, während FOO_FOR_BUILD nur die Build-Maschinenkonfiguration beeinflusst. Zum Beispiel:

  • PKG_CONFIG_PATH_FOR_BUILD steuert die Pfade, in denen pkg-config nach Abhängigkeiten sucht, die nur für native: true gelten (Build-Maschine).

  • PKG_CONFIG_PATH steuert die Pfade, in denen pkg-config nach Abhängigkeiten sucht, die nur für native: false gelten (Host-Maschine).

Dies spiegelt das build.-Präfix für (eingebaute) Meson-Optionen wider, das die gleiche Bedeutung hat.

Dies ist nützlich für Cross-Builds. Bei nativen Builds ist build = host, und die Umgebungsvariablen ohne Suffix allein reichen aus.

Vor 0.54.0 gab es keine mit `_FOR_BUILD` suffigierten Variablen, und die meisten Umgebungsvariablen beeinflussten nur native Maschinenkonfigurationen, obwohl dies nicht konsistent war (z.B. beeinflusste PKG_CONFIG_PATH immer noch Cross-Builds).

Die Ergebnisse der Suche sind