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_BUILDsteuert die Pfade, in denen pkg-config nach Abhängigkeiten sucht, die nur fürnative: truegelten (Build-Maschine). -
PKG_CONFIG_PATHsteuert die Pfade, in denen pkg-config nach Abhängigkeiten sucht, die nur fürnative: falsegelten (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