Funktionen

Dieses Dokument listet alle im meson.build verfügbaren Funktionen auf. Sehen Sie sich das Handbuch der Wurzelverzeichnis für einen Überblick über alle Funktionen an.

add_global_arguments()

Fügt globale Argumente zur Compiler-Befehlszeile hinzu.

Signatur

# Adds global arguments to the compiler command line
void add_global_arguments(
  str Compiler argument...,  # The compiler arguments to add

  # Keyword arguments:
  language : list[str]  [required]  # Specifies the language(s) that the arguments should be
  native   : bool                   # A boolean specifying whether the arguments should be
)
Hinweis

Normalerweise sollten Sie stattdessen add_project_arguments() verwenden, da dies auch funktioniert, wenn Ihr Projekt als Unterprojekt verwendet wird.

Hinweis

Sie müssen Argumente immer einzeln arg1, arg2, ... übergeben und nicht als Zeichenkette 'arg1 arg2', ...

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (Compiler-Argument...) vom Typ str.

Die hinzuzufügenden Compiler-Argumente

Die Funktion add_global_arguments() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
language list[str]

Gibt die Sprache(n) an, auf die die Argumente angewendet werden sollen. Wenn eine Liste von Sprachen angegeben wird, werden die Argumente zu jeder der entsprechenden Compiler-Befehlszeilen hinzugefügt. Beachten Sie, dass es keine Möglichkeit gibt, ein auf diese Weise gesetztes Argument zu entfernen. Wenn Sie ein Argument haben, das nur in einer Teilmenge von Zielen verwendet wird, müssen Sie es in zielspezifischen Flags angeben.

native bool

Ein Boolescher Wert, der angibt, ob die Argumente auf die native oder Cross-Kompilierung angewendet werden sollen. Wenn true, werden die Argumente nur für native Kompilierungen verwendet. Wenn false, werden die Argumente nur in Cross-Kompilierungen verwendet. Wenn weggelassen, werden die Flags zu nativen Kompilierungen hinzugefügt, wenn nativ kompiliert wird, und zu Cross-Kompilierungen (nur), wenn cross kompiliert wird.

(seit 0.48.0)

Standard = false


Fügt globale Argumente zur Linker-Befehlszeile hinzu.

Wie add_global_arguments(), aber die Argumente werden an den Linker übergeben.

Signatur

# Adds global arguments to the linker command line
void add_global_link_arguments(
  str Linker argument...,  # The linker arguments to add

  # Keyword arguments:
  language : list[str]  [required]  # Specifies the language(s) that the arguments should be
  native   : bool                   # A boolean specifying whether the arguments should be
)
Hinweis

Normalerweise sollten Sie stattdessen add_project_link_arguments() verwenden, da dies auch funktioniert, wenn Ihr Projekt als Unterprojekt verwendet wird.

Hinweis

Sie müssen Argumente immer einzeln arg1, arg2, ... übergeben und nicht als Zeichenkette 'arg1 arg2', ...

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (Linker-Argument...) vom Typ str.

Die hinzuzufügenden Linker-Argumente

Die Funktion add_global_link_arguments() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter


add_languages()

Fügt dem Projekt zugehörige Programmiersprachen hinzu.

Dies ist äquivalent dazu, sie in der project-Deklaration zu haben. Diese Funktion wird normalerweise verwendet, um Sprachen hinzuzufügen, die nur unter bestimmten Bedingungen verwendet werden.

Gibt true zurück, wenn alle angegebenen Sprachen gefunden wurden, und false andernfalls.

Wenn native weggelassen wird, können die Sprachen für die Build- oder Host-Maschine verwendet werden, sind aber nie für die Build-Maschine erforderlich. (d. h. es ist äquivalent zu add_languages(*langs*, native: false, required: *required*) und add_languages(*langs*, native: true, required: false). Dieses Standardverhalten kann sich in einer zukünftigen Meson-Version zu native: false ändern.

Signatur

# Add programming languages used by the project
bool add_languages(
  str Language...,  # The languages to add

  # Keyword arguments:
  native   : bool            # If set to `true`, the language will be used to compile for the build
  required : bool | feature  # If set to `true`, Meson will halt if any of the languages
)

Beispiel

project('foobar', 'c')

if compiling_for_osx
  add_languages('objc')
endif
if add_languages('cpp', required : false)
  executable('cpp-app', 'main.cpp')
endif

# More code...

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (Sprache...) vom Typ str.

Die hinzuzufügenden Sprachen

Die Funktion add_languages() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
native bool

Wenn auf true gesetzt, wird die Sprache zur Kompilierung für die Build-Maschine verwendet, wenn false, für die Host-Maschine.

(seit 0.54.0)

erforderlich bool | feature

Wenn auf true gesetzt, wird Meson beendet, wenn eine der angegebenen Sprachen nicht gefunden wird. (seit 0.47.0) Der Wert einer feature-Option kann ebenfalls übergeben werden.

Standard = true


add_project_arguments()

Fügt projektspezifische Argumente zur Compiler-Befehlszeile hinzu.

Diese Funktion verhält sich genauso wie add_global_arguments(), außer dass die Argumente nur für das aktuelle Projekt verwendet werden und nicht in anderen Unterprojekten.

Signatur

# Adds project specific arguments to the compiler command line
void add_project_arguments(
  str Compiler argument...,  # The compiler arguments to add

  # Keyword arguments:
  language : list[str]  [required]  # Specifies the language(s) that the arguments should be
  native   : bool                   # A boolean specifying whether the arguments should be
)
Hinweis

Sie müssen Argumente immer einzeln arg1, arg2, ... übergeben und nicht als Zeichenkette 'arg1 arg2', ...

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (Compiler-Argument...) vom Typ str.

Die hinzuzufügenden Compiler-Argumente

Die Funktion add_project_arguments() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
language list[str]

Gibt die Sprache(n) an, auf die die Argumente angewendet werden sollen. Wenn eine Liste von Sprachen angegeben wird, werden die Argumente zu jeder der entsprechenden Compiler-Befehlszeilen hinzugefügt. Beachten Sie, dass es keine Möglichkeit gibt, ein auf diese Weise gesetztes Argument zu entfernen. Wenn Sie ein Argument haben, das nur in einer Teilmenge von Zielen verwendet wird, müssen Sie es in zielspezifischen Flags angeben.

native bool

Ein Boolescher Wert, der angibt, ob die Argumente auf die native oder Cross-Kompilierung angewendet werden sollen. Wenn true, werden die Argumente nur für native Kompilierungen verwendet. Wenn false, werden die Argumente nur in Cross-Kompilierungen verwendet. Wenn weggelassen, werden die Flags zu nativen Kompilierungen hinzugefügt, wenn nativ kompiliert wird, und zu Cross-Kompilierungen (nur), wenn cross kompiliert wird.

(seit 0.48.0)

Standard = false


add_project_dependencies()

Fügt der Compiler- und Linker-Befehlszeile Argumente hinzu, sodass die angegebene Gruppe von Abhängigkeiten in allen Build-Produkten für dieses Projekt enthalten ist.

Signatur

(seit 0.63.0)

# Adds arguments to the compiler and linker command line, so that the
void add_project_dependencies(
  dep dependencies...,  # The dependencies to add; if internal dependencies are included, they must not include any built object

  # Keyword arguments:
  language : list[str]  [required]  # Specifies the language(s) that the arguments should be
  native   : bool                   # A boolean specifying whether the arguments should be
)

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (Abhängigkeiten...) vom Typ dep.

Die hinzuzufügenden Abhängigkeiten; wenn interne Abhängigkeiten enthalten sind, dürfen sie kein gebautes Objekt enthalten.

Die Funktion add_project_dependencies() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
language list[str]

Gibt die Sprache(n) an, auf die die Argumente angewendet werden sollen. Wenn eine Liste von Sprachen angegeben wird, werden die Argumente zu jeder der entsprechenden Compiler-Befehlszeilen hinzugefügt. Beachten Sie, dass es keine Möglichkeit gibt, ein auf diese Weise gesetztes Argument zu entfernen. Wenn Sie ein Argument haben, das nur in einer Teilmenge von Zielen verwendet wird, müssen Sie es in zielspezifischen Flags angeben.

native bool

Ein Boolescher Wert, der angibt, ob die Argumente auf die native oder Cross-Kompilierung angewendet werden sollen. Wenn true, werden die Argumente nur für native Kompilierungen verwendet. Wenn false, werden die Argumente nur in Cross-Kompilierungen verwendet. Wenn weggelassen, werden die Flags zu nativen Kompilierungen hinzugefügt, wenn nativ kompiliert wird, und zu Cross-Kompilierungen (nur), wenn cross kompiliert wird.

(seit 0.48.0)

Standard = false


Fügt projektspezifische Argumente zur Linker-Befehlszeile hinzu.

Wie add_project_arguments(), aber die Argumente werden an den Linker übergeben.

Signatur

# Adds project specific arguments to the linker command line
void add_project_link_arguments(
  str Linker argument...,  # The linker arguments to add

  # Keyword arguments:
  language : list[str]  [required]  # Specifies the language(s) that the arguments should be
  native   : bool                   # A boolean specifying whether the arguments should be
)
Hinweis

Sie müssen Argumente immer einzeln arg1, arg2, ... übergeben und nicht als Zeichenkette 'arg1 arg2', ...

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (Linker-Argument...) vom Typ str.

Die hinzuzufügenden Linker-Argumente

Die Funktion add_project_link_arguments() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter


add_test_setup()

Fügt ein benutzerdefiniertes Test-Setup hinzu. Dieses Setup kann verwendet werden, um die Tests mit einer benutzerdefinierten Konfiguration auszuführen, z. B. unter Valgrind.

Um das Test-Setup zu verwenden, führen Sie meson test --setup=*name* im Build-Verzeichnis aus.

Beachten Sie, dass all diese Optionen auch beim Ausführen des Skripts meson test zur Ausführung von Tests verfügbar sind, anstatt ninja test oder msbuild RUN_TESTS.vcxproj usw., je nach Backend.

Signatur

# Add a custom test setup
void add_test_setup(
  str name,     # The name of the test setup

  # Keyword arguments:
  env                : env | list[str] | dict[str]   # environment variables to set
  exclude_suites     : list[str]                     # A list of test suites that should be excluded when using this setup
  exe_wrapper        : list[str | external_program]  # The command or script followed by the arguments to it
  gdb                : bool                          # If `true`, the tests are also run under `gdb`
  is_default         : bool                          # Set whether this is the default test setup
  timeout_multiplier : int                           # A number to multiply the test timeout with
)

Argumente

Die Funktion add_test_setup() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
name str

Der Name des Test-Setups

Schließlich akzeptiert add_test_setup() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
env env | list[str] | dict[str]

zu setzende Umgebungsvariablen, wie z. B. ['NAME1=value1', 'NAME2=value2'], oder ein env-Objekt, das eine ausgefeiltere Umgebungsverwaltung ermöglicht. (Seit 0.52.0) Ein Dictionary wird ebenfalls akzeptiert.

exclude_suites list[str]

Eine Liste von Test-Suiten, die bei Verwendung dieses Setups ausgeschlossen werden sollen. Suiten, die in der Option --suite für meson test angegeben sind, werden immer ausgeführt und überschreiben gegebenenfalls add_test_setup.

(seit 0.57.0)

exe_wrapper list[str | external_program]

Der Befehl oder das Skript, gefolgt von seinen Argumenten

gdb bool

Wenn true, werden die Tests auch unter gdb ausgeführt

Standard = false

is_default bool

Legt fest, ob dies das Standard-Test-Setup ist. Wenn true, wird das Setup immer dann verwendet, wenn meson test ohne die Option --setup aufgerufen wird.

(seit 0.49.0)

Standard = false

timeout_multiplier int

Eine Zahl, mit der das Test-Timeout multipliziert wird. Seit 0.57, wenn timeout_multiplier <= 0 ist, hat der Test eine unendliche Dauer. In früheren Versionen von Meson schlug der Test sofort mit einem Timeout fehl.

Standard = 1


alias_target()

Diese Funktion erstellt ein neues Top-Level-Ziel. Wie alle Top-Level-Ziele integriert sich dieses in das ausgewählte Backend. Zum Beispiel können Sie es mit meson compile target_name ausführen. Dies ist ein Dummy-Ziel, das keinen Befehl ausführt, aber sicherstellt, dass alle Abhängigkeiten erstellt werden. Abhängigkeiten können beliebige Build-Ziele sein. Seit 0.60.0 umfasst dies run_tgt.

Seit 1.6.0 erstellt die Übergabe eines both_libs-Objekts sowohl statische als auch dynamische Bibliotheken.

Signatur

(seit 0.52.0)

# This function creates a new top-level target
alias_tgt alias_target(
  str target_name,     # The name of the alias target
  tgt Dep...,          # The targets to depend on
)

Argumente

Die Funktion alias_target() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
zielname str

Der Name des Alias-Ziels

Zusätzlich akzeptiert die Funktion zwischen 1 und unendlich variable Argumente (Dep...) vom Typ tgt.

Die Abhängigkeitsziele


assert()

Bricht mit einer Fehlermeldung ab, wenn condition zu false ausgewertet wird.

Signatur

# Abort with an error message if `condition` evaluates to `false`
void assert(
  bool condition,     # Abort if this evaluates to `false`
  str  [message],     # The error message to print
)
Hinweis

Das Argument message ist seit 0.53.0 optional und gibt standardmäßig die Bedingungsanweisung aus.

Argumente

Die Funktion assert() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
Bedingung bool

Bricht ab, wenn dies zu false ausgewertet wird

Nachricht str

Die auszugebende Fehlermeldung.

[optional]


benchmark()

Erstellt ein Benchmark-Element, das ausgeführt wird, wenn das Benchmark-Ziel aufgerufen wird. Das Verhalten dieser Funktion ist identisch mit test(), außer dass

  • benchmark() hat keinen is_parallel-Schlüsselwort, da Benchmarks nicht parallel ausgeführt werden
  • benchmark() fügt nicht automatisch die Umgebungsvariable MALLOC_PERTURB_ hinzu

Definierte Benchmarks können auf Backend-unabhängige Weise ausgeführt werden, indem meson test --benchmark im Build-Verzeichnis aufgerufen wird, oder durch die Verwendung von Backend-spezifischen Befehlen wie ninja benchmark oder msbuild RUN_TESTS.vcxproj.

Signatur

# Creates a benchmark item that will be run when the benchmark target is
void benchmark(
  str                                                           name,           # The *unique* test id
  exe | jar | external_program | file | custom_tgt | custom_idx executable,     # The program to execute

  # Keyword arguments:
  args        : list[str | file | tgt | external_program]  # Arguments to pass to the executable
  depends     : list[build_tgt | custom_tgt]               # specifies that this test depends on the specified
  env         : env | list[str] | dict[str]                # environment variables to set, such as `['NAME1=value1',
  priority    : int                                        # specifies the priority of a test
  protocol    : str                                        # specifies how the test results are parsed and can
  should_fail : bool                                       # when true the test is considered passed if the
  suite       : str | list[str]                            # `'label'` (or list of labels `['label1', 'label2']`)
  timeout     : int                                        # the amount of seconds the test is allowed to run, a test
  verbose     : bool                                       # if true, forces the test results to be logged as if `--verbose` was passed
  workdir     : str                                        # absolute path that will be used as the working directory
)
Hinweis

Vor 0.52.0 warnte benchmark, dass depends und priority nicht unterstützt wurden, dies ist falsch.

Argumente

Die Funktion benchmark() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
name str

Die *eindeutige* Test-ID

ausführbare Datei exe | jar | external_program | file | custom_tgt | custom_idx

Das auszuführende Programm. (Seit 1.4.0) Ein benutzerdefiniertes Ziel wird ebenfalls akzeptiert.

Schließlich akzeptiert benchmark() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
args list[str | file | tgt | external_program]

Argumente, die an die ausführbare Datei übergeben werden sollen

abhängig list[build_tgt | custom_tgt]

gibt an, dass dieser Test von den angegebenen Zielen abhängt, obwohl er keines davon als Befehlszeilenargument nimmt. Dies ist für Fälle gedacht, in denen der Test diese Ziele intern findet, z. B. Plugins oder Globbing. Diese Ziele werden erstellt, bevor der Test ausgeführt wird, auch wenn sie build_by_default : false haben.

(seit 0.46.0)

env env | list[str] | dict[str]

Umgebungsvariablen, die gesetzt werden sollen, wie z. B. ['NAME1=value1', 'NAME2=value2'], oder ein env-Objekt, das eine ausgefeiltere Umgebungsverwaltung ermöglicht. (Seit 0.52.0) Ein Dictionary wird ebenfalls akzeptiert.

Priorität int

gibt die Priorität eines Tests an. Tests mit höherer Priorität werden *gestartet* vor Tests mit niedrigerer Priorität. Die Startreihenfolge von Tests mit identischen Prioritäten ist Implementierungs-abhängig. Die Standardpriorität ist 0, negative Zahlen sind zulässig.

(seit 0.52.0)

Standard = 0

Protokoll str

gibt an, wie die Testergebnisse analysiert werden und kann einer von exitcode, tap oder gtest sein. Weitere Informationen zum Test-Harness-Protokoll finden Sie unter Unit Tests. Die folgenden Werte werden akzeptiert

  • exitcode: Der Exit-Code des ausführbaren Programms wird vom Test-Harness verwendet, um das Ergebnis des Tests aufzuzeichnen).

  • tap: Test Anything Protocol.

  • gtest (seit 0.55.0): für Google Tests.

  • rust (seit 0.56.0): für native Rust-Tests

(seit 0.50.0)

Standard = 'exitcode'

sollte_fehlen bool

Wenn true, gilt der Test als erfolgreich, wenn das ausführbare Programm einen Rückgabewert ungleich Null zurückgibt (d. h. einen Fehler meldet)

Standard = false

Suite str | list[str]

'label' (oder Liste von Labels ['label1', 'label2']), die diesem Test zugeordnet sind. Der Suitenamen wird durch einen (Unter-)Projektnamen qualifiziert, was zu (sub)project_name:label führt. Bei einer Liste von Zeichenketten sind die Suitenamen (sub)project_name:label1, (sub)project_name:label2 usw.

Timeout int

Die Anzahl der Sekunden, die der Test laufen darf. Ein Test, der seine Zeitgrenze überschreitet, gilt immer als fehlgeschlagen. Standardmäßig 30 Sekunden. Seit 0.57, wenn timeout <= 0 ist, hat der Test eine unendliche Dauer. In früheren Versionen von Meson schlug der Test sofort mit einem Timeout fehl.

Standard = 30

ausführlich bool

Wenn true, werden die Testergebnisse zwangsweise protokolliert, als ob --verbose an meson test übergeben wurde.

(seit 0.62.0)

Standard = false

Arbeitsverzeichnis str

Absoluter Pfad, der als Arbeitsverzeichnis für den Test verwendet wird


both_libraries()

Erstellt sowohl eine statische als auch eine dynamische Bibliothek mit den angegebenen Quellen. Positions- und Schlüsselwortargumente sind ansonsten die gleichen wie für library(). Quellcode-Dateien werden nur einmal kompiliert und Objektdateien werden zum Erstellen beider Bibliotheken wiederverwendet, es sei denn, die Benutzeroption b_staticpic oder das Argument pic sind auf false gesetzt, in welchem Fall die Quellen zweimal kompiliert werden.

Signatur

(seit 0.46.0)

# Builds both a static and shared library with the given sources
both_libs both_libraries(
  str                                                   target_name,     # The *unique* name of the build target
  str | file | custom_tgt | custom_idx | generated_list source...,       # Input source to compile

  # Keyword arguments:
  <lang>_args                  : list[str]                                                               # compiler flags to use for the given language;
  <lang>_pch                   : str                                                                     # precompiled header file to use for the given language
  <lang>_shared_args           : list[str]                                                               # Arguments that are only passed to a shared library
  <lang>_static_args           : list[str]                                                               # Arguments that are only passed to a static library
  build_by_default             : bool                                                                    # Causes, when set to `true`, to have this target be built by default
  build_rpath                  : str                                                                     # A string to add to target's rpath definition in the build dir,
  d_debug                      : list[str]                                                               # The [D version identifiers](https://dlang
  d_import_dirs                : list[inc | str]                                                         # the directories to add to the string search path (i
  d_module_versions            : list[str | int]                                                         # List of module version identifiers set when compiling D sources
  d_unittest                   : bool                                                                    # When set to true, the D modules are compiled in debug mode
  darwin_versions              : str | int | list[str]                                                   # Defines the `compatibility version` and `current version` for the dylib on macOS
  dependencies                 : list[dep]                                                               # one or more dependency objects
  extra_files                  : str | file | custom_tgt | custom_idx                                    # Not used for the build itself but are shown as source files in IDEs
  gnu_symbol_visibility        : str                                                                     # Specifies how symbols should be exported, see
  gui_app                      : bool                                                                    # When set to true flags this target as a GUI application
  implicit_include_directories : bool                                                                    # Controls whether Meson adds the current source and build directories to the include path
  include_directories          : list[inc | str]                                                         # one or more objects created with the include_directories() function,
  install                      : bool                                                                    # When set to true, this executable should be installed
  install_dir                  : str                                                                     # override install directory for this file
  install_mode                 : list[str | int]                                                         # Specify the file mode in symbolic format
  install_rpath                : str                                                                     # A string to set the target's rpath to after install
  install_tag                  : str                                                                     # A string used by the `meson install --tags` command
  link_args                    : list[str]                                                               # Flags to use during linking
  link_depends                 : str | file | custom_tgt | custom_idx                                    # Strings, files, or custom targets the link step depends on
  link_language                : str                                                                     # Makes the linker for this target be for the specified language
  link_whole                   : list[lib | custom_tgt | custom_idx]                                     # Links all contents of the given static libraries whether they are used or
  link_with                    : list[lib | custom_tgt | custom_idx]                                     # One or more shared or static libraries
  name_prefix                  : str | list[void]                                                        # The string that will be used as the prefix for the
  name_suffix                  : str | list[void]                                                        # The string that will be used as the extension for the
  native                       : bool                                                                    # Controls whether the target is compiled for the build or host machines
  objects                      : list[extracted_obj | file | str]                                        # List of object files that should be linked in this target
  override_options             : list[str] | dict[str | bool | int | list[str]]                            # takes an array of strings in the same format as `project`'s `default_options`
  pic                          : bool                                                                    # Builds the library as positional independent code
  prelink                      : bool                                                                    # If `true` the object files in the target will be prelinked,
  rust_abi                     : str                                                                     # Set the specific ABI to compile (when compiling rust)
  rust_crate_type              : str                                                                     # Set the specific type of rust crate to compile (when compiling rust)
  rust_dependency_map          : dict[str]                                                               # On rust targets this provides a map of library names to the crate name
  sources                      : str | file | custom_tgt | custom_idx | generated_list | structured_src  # Additional source files
  soversion                    : str | int                                                               # A string or integer specifying the soversion of this shared library,
  vala_args                    : list[str | file]                                                        # Compiler flags for Vala
  vala_shared_args             : list[str | file]                                                        # Arguments that are only passed to a shared library
  vala_static_args             : list[str | file]                                                        # Arguments that are only passed to a static library
  version                      : str                                                                     # A string specifying the version of this shared library,
  vs_module_defs               : str | file | custom_tgt | custom_idx                                    # Specify a Microsoft module definition file for controlling symbol exports,
  win_subsystem                : str                                                                     # Specifies the subsystem type to use
)

Argumente

Die Funktion both_libraries() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
zielname str

Der *eindeutige* Name des Build-Ziels

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (quelle...) vom Typ str | file | custom_tgt | custom_idx | generated_list.

Eingabequelle zum Kompilieren. Die folgenden Typen werden unterstützt

  • Zeichenketten relativ zum aktuellen Quellverzeichnis
  • file-Objekte, die in früheren Build-Dateien definiert wurden
  • Der Rückgabewert von Konfigurationszeit-Generatoren wie configure_file()
  • Der Rückgabewert von Build-Zeit-Generatoren wie custom_target() oder generator.process()

Diese Eingabedateien können Quellen, Objekte, Bibliotheken oder beliebige andere Dateien sein. Meson kategorisiert sie automatisch anhand der Erweiterung und verwendet sie entsprechend. Zum Beispiel werden Quellen (.c, .cpp, .vala, .rs usw.) kompiliert und Objekte (.o, .obj) und Bibliotheken (.so, .dll usw.) verknüpft.

Mit dem Ninja-Backend erstellt Meson eine Build-Zeit-Abhängigkeit (order-only dependency) für alle generierten Eingabedateien, einschließlich unbekannter Dateien. Dies ist notwendig, um die Generierung der tatsächlichen Abhängigkeiten in der von Ihrem Compiler generierten Depfile zu bootstrappen, um zu bestimmen, wann Quellen neu kompiliert werden müssen. Ninja stützt sich für alle Eingabedateien, generierten und nicht generierten, auf diese Abhängigkeitsdatei. Das Verhalten ist für andere Backends ähnlich.

Schließlich akzeptiert both_libraries() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
<lang>_args list[str]

Compiler-Flags für die angegebene Sprache; z. B. cpp_args für C++

<lang>_pch str

Vorkompilierte Header-Datei für die angegebene Sprache

<lang>_shared_args list[str]

Argumente, die nur an eine dynamische Bibliothek übergeben werden

(seit 1.3.0)

<lang>_static_args list[str]

Argumente, die nur an eine statische Bibliothek übergeben werden

(seit 1.3.0)

build_by_default bool

Wenn auf true gesetzt, wird dieses Ziel standardmäßig erstellt. Das bedeutet, es wird erstellt, wenn meson compile ohne Argumente aufgerufen wird. Der Standardwert ist true für alle Build-Zieltypen.

(seit 0.38.0)

Standard = true

build_rpath str

Eine Zeichenkette, die der RPATH-Definition des Ziels im Build-Verzeichnis hinzugefügt wird, aber bei der Installation entfernt wird

(seit 0.42.0)

d_debug list[str]

Die D-Versions-Identifikatoren, die während der Kompilierung von D-Quelldateien hinzugefügt werden sollen.

d_import_dirs list[inc | str]

Die Verzeichnisse, die zum String-Suchpfad hinzugefügt werden sollen (d. h. der -J-Schalter für DMD). Müssen inc-Objekte oder einfache Zeichenketten sein.

(seit 0.62.0)

d_module_versions list[str | int]

Liste der Modulversions-Identifikatoren, die beim Kompilieren von D-Quellen gesetzt werden.

d_unittest bool

Wenn true gesetzt, werden die D-Module im Debug-Modus kompiliert.

Standard = false

darwin_versions str | int | list[str]

Definiert die compatibility version und current version für die dylib unter macOS. Wenn eine Liste angegeben wird, muss sie null, ein oder zwei Elemente enthalten. Wenn nur ein Element angegeben wird oder es sich nicht um eine Liste handelt, wird der angegebene Wert zum Setzen der Kompatibilitäts- und aktuellen Version verwendet. Wenn nicht angegeben, wird die soversion wie nach den oben genannten Regeln verwendet.

(seit 0.48.0)

dependencies list[dep]

Ein oder mehrere Abhängigkeitsobjekte, die mit dependency() oder compiler.find_library() (für externe Abhängigkeiten) oder declare_dependency() (für vom Projekt erstellte Abhängigkeiten) erstellt wurden.

extra_files str | file | custom_tgt | custom_idx

Nicht für den Build selbst verwendet, aber in IDEs, die Dateien nach Zielen gruppieren (wie z. B. Visual Studio), als Quelldateien angezeigt.

gnu_symbol_visibility str

Gibt an, wie Symbole exportiert werden sollen, siehe z. B. das GCC-Wiki für weitere Informationen. Dieser Wert kann entweder eine leere Zeichenkette oder einer der Werte default, internal, hidden, protected oder inlineshidden sein, was dasselbe wie hidden ist, aber auch Dinge wie C++ implizite Konstruktoren wie im GCC-Handbuch beschrieben enthält. Ignoriert bei Compilern, die GNU Visibility-Argumente nicht unterstützen.

(seit 0.48.0)

gui_app bool

Wenn true gesetzt, kennzeichnet dieses Ziel als GUI-Anwendung auf Plattformen, wo dies einen Unterschied macht, veraltet seit 0.56.0, verwenden Sie stattdessen win_subsystem.

VERALTET

in 0.56.0

Standard = false

implicit_include_directories bool

Steuert, ob Meson die aktuellen Quell- und Build-Verzeichnisse zum Include-Pfad hinzufügt

(seit 0.42.0)

Standard = true

include_directories list[inc | str]

Ein oder mehrere Objekte, die mit der Funktion include_directories() erstellt wurden, oder (seit 0.50.0) Zeichenketten, die transparent in Include-Verzeichnisobjekte erweitert werden.

installieren bool

Wenn true gesetzt, soll diese ausführbare Datei installiert werden.

Standard = false

install_dir str

Überschreibt das Installationsverzeichnis für diese Datei. Wenn der Wert ein relativer Pfad ist, wird er relativ zur Option prefix betrachtet. Wenn Sie beispielsweise Plugins in einem Unterverzeichnis installieren möchten, würden Sie so etwas verwenden: install_dir : get_option('libdir') / 'projectname-1.0'.

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und Gruppe/GID für die installierten Dateien an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

(seit 0.47.0)

install_rpath str

Eine Zeichenkette, die den RPATH des Ziels nach der Installation setzt (aber *nicht* davor). Unter Windows hat dieses Argument keine Wirkung.

install_tag str

Eine Zeichenkette, die vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge von Dateien zu installieren. Standardmäßig haben alle Build-Ziele den Tag runtime, mit Ausnahme von statischen Bibliotheken, die den Tag devel haben.

(seit 0.60.0)

name_prefix str | list[void]

Die Zeichenkette, die als Präfix für den Ausgabedateinamen des Ziels verwendet wird, indem der Standard überschrieben wird (nur für Bibliotheken verwendet). Standardmäßig ist dies lib auf allen Plattformen und Compilern, außer bei MSVC-Shared-Bibliotheken, wo es zur Konvention weggelassen wird, und Cygwin-Shared-Bibliotheken, wo es cyg ist.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

name_suffix str | list[void]

Die Zeichenkette, die als Erweiterung für das Ziel verwendet wird, indem der Standard überschrieben wird. Standardmäßig ist unter Windows exe für ausführbare Dateien und auf anderen Plattformen wird es weggelassen.

Für dynamische Bibliotheken ist der Standardwert dylib unter macOS, dll unter Windows und so überall sonst. Für statische Bibliotheken ist es überall a. Konventionsgemäß verwenden MSVC-statische Bibliotheken die lib-Erweiterung, aber wir verwenden a, um eine mögliche Namenskollision mit dynamischen Bibliotheken zu vermeiden, die ebenfalls Importbibliotheken mit der Erweiterung lib generieren.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

native bool

Steuert, ob das Ziel für die Build- oder Host-Maschine kompiliert wird.

Standard = false

objekte list[extracted_obj | file | str]

Liste der Objektdateien, die in diesem Ziel verknüpft werden sollen.

Seit 1.1.0 kann dies generierte Dateien zusätzlich zu Objektdateien enthalten, für die Sie keine Quelle haben, oder die von anderen Build-Zielen erzeugte Objektdateien. In früheren Versionen mussten generierte Objektdateien in sources platziert werden.

override_options list[str] | dict[str | bool | int | list[str]]

Nimmt ein Array von Zeichenketten im selben Format wie die default_options von project, überschreibt die Werte dieser Optionen nur für dieses Ziel. (seit 1.2.0): Ein Dictionary kann jetzt übergeben werden.

(seit 0.40.0)

pic bool

Erstellt die Bibliothek als positionsunabhängigen Code (damit sie in eine dynamische Bibliothek gelinkt werden kann). Diese Option hat keine Auswirkung unter Windows und OS X, da sie unter Windows nicht sinnvoll ist und PIC unter OS X nicht deaktiviert werden kann.

(seit 0.36.0)

rust_abi str

Setzt die spezifische ABI, die kompiliert werden soll (beim Kompilieren von Rust).

  • 'rust' (Standard): Erzeugt ein "rlib" oder "dylib" Kiste, abhängig vom Typ der zu erstellenden Bibliothek.

  • 'c': Erzeugt eine "cdylib" oder "staticlib" Kiste, abhängig vom Typ der zu erstellenden Bibliothek.

(seit 1.3.0)

rust_crate_type str

Setzt den spezifischen Typ der zu kompilierenden Rust-Kiste (beim Kompilieren von Rust).

Wenn das Ziel eine executable() ist, ist der Standardwert "bin", der einzige erlaubte Wert.

Wenn es sich um eine static_library() handelt, ist der Standardwert "lib" und kann "lib", "staticlib" oder "rlib" sein. Wenn "lib", wählt Rustc einen Standardwert, "staticlib" bedeutet eine Bibliothek mit C-ABI, "rlib" bedeutet eine Bibliothek mit Rust-ABI.

Wenn es sich um eine shared_library() handelt, ist der Standardwert "lib" und kann "lib", "dylib", "cdylib" oder "proc-macro" sein. Wenn "lib", wählt Rustc einen Standardwert, "cdylib" bedeutet eine Bibliothek mit C-ABI, "dylib" bedeutet eine Bibliothek mit Rust-ABI, und "proc-macro" ist eine spezielle rust-prozedurale Makrokiste.

"proc-macro" ist neu in 0.62.0.

Seit 1.3.0 ist dies veraltet und ersetzt durch das Schlüsselwortargument "rust_abi". proc_macro-Kisten werden jetzt durch die Methode rust.proc_macro() behandelt.

(seit 0.42.0)

VERALTET

in 1.3.0

rust_dependency_map dict[str]

Bei Rust-Zielen bietet dies eine Zuordnung von Bibliotheksnamen zum Kistenamen, unter dem sie im Rust-Code verfügbar wären.

Dies ermöglicht Umbenennungen ähnlich der Abhängigkeitsumbenennungsfunktion von Cargo oder extern crate foo as bar im Rust-Code.

(seit 1.2.0)

sources str | file | custom_tgt | custom_idx | generated_list | structured_src

Zusätzliche Quellcodedateien. Ähnlich wie die Quellcode-Varargs.

soversion str | int

Eine Zeichenkette oder Ganzzahl, die die Soversion dieser dynamischen Bibliothek angibt, z. B. 0. Unter Linux und Windows wird dies verwendet, um die Soversion (oder eine Entsprechung) im Dateinamen festzulegen. Wenn soversion beispielsweise 4 ist, wird eine Windows-DLL foo-4.dll genannt und eine der Aliase der Linux-Shared-Bibliothek wäre libfoo.so.4. Wenn dies nicht angegeben wird, wird stattdessen der erste Teil von version verwendet (siehe unten). Wenn beispielsweise version 3.6.0 ist und soversion nicht definiert ist, wird es auf 3 gesetzt.

vala_args list[str | file]

Compiler-Flags für Vala. Im Gegensatz zu anderen Sprachen können diese Dateien enthalten

vala_shared_args list[str | file]

Argumente, die nur an eine dynamische Bibliothek übergeben werden. Ähnlich wie vala_args ist files() zusätzlich zu Zeichenketten erlaubt

(seit 1.3.0)

vala_static_args list[str | file]

Argumente, die nur an eine statische Bibliothek übergeben werden. Ähnlich wie vala_args ist files() zusätzlich zu Zeichenketten erlaubt

(seit 1.3.0)

Version str

Ein String, der die Version dieser Shared Library angibt, z. B. 1.1.0. Unter Linux und OS X wird dies verwendet, um die Version der Shared Library im Dateinamen festzulegen, z. B. libfoo.so.1.1.0 und libfoo.1.1.0.dylib. Wenn dies nicht angegeben ist, wird stattdessen soversion verwendet (siehe oben).

vs_module_defs str | file | custom_tgt | custom_idx

Gibt eine Microsoft-Moduldefinitionsdatei zur Steuerung von Symbol-Exporten usw. auf Plattformen an, auf denen dies möglich ist (z. B. Windows).

(Seit 1.3.0) custom_idx wird unterstützt

win_subsystem str

Gibt den Subsystemtyp für die Windows-Plattform an. Typische Werte sind console für Textmodusprogramme und windows für GUI-Anwendungen. Der Wert kann auch eine Versionsangabe enthalten, z. B. windows,6.0. Die vollständige Liste finden Sie in der MSDN-Dokumentation.

(seit 0.56.0)

Standard = 'console'


build_target()

Erstellt ein Build-Ziel, dessen Typ dynamisch mit dem Schlüsselwortargument target_type festgelegt werden kann.

target_type kann eingestellt werden auf

Diese Deklaration

executable(<arguments and keyword arguments>)

entspricht diesem

build_target(<arguments and keyword arguments>, target_type : 'executable')

Die Listen für die Schlüsselwortargumente (wie sources, objects und dependencies) werden immer abgeflacht, was bedeutet, dass Sie beim Erstellen der endgültigen Liste Listen beliebig verschachteln und hinzufügen können.

Das zurückgegebene Objekt hat auch Methoden, die in build_tgt dokumentiert sind.

* "jar" ist veraltet, da es sich grundlegend von den anderen build_target-Typen unterscheidet.

Signatur

# Creates a build target whose type can be set dynamically with the
build_tgt build_target(
  str                                                   target_name,     # The *unique* name of the build target
  str | file | custom_tgt | custom_idx | generated_list source...,       # Input source to compile

  # Keyword arguments:
  <lang>_args                  : list[str]                                                               # compiler flags to use for the given language;
  <lang>_pch                   : str                                                                     # precompiled header file to use for the given language
  <lang>_shared_args           : list[str]                                                               # Arguments that are only passed to a shared library
  <lang>_static_args           : list[str]                                                               # Arguments that are only passed to a static library
  build_by_default             : bool                                                                    # Causes, when set to `true`, to have this target be built by default
  build_rpath                  : str                                                                     # A string to add to target's rpath definition in the build dir,
  d_debug                      : list[str]                                                               # The [D version identifiers](https://dlang
  d_import_dirs                : list[inc | str]                                                         # the directories to add to the string search path (i
  d_module_versions            : list[str | int]                                                         # List of module version identifiers set when compiling D sources
  d_unittest                   : bool                                                                    # When set to true, the D modules are compiled in debug mode
  darwin_versions              : str | int | list[str]                                                   # Defines the `compatibility version` and `current version` for the dylib on macOS
  dependencies                 : list[dep]                                                               # one or more dependency objects
  export_dynamic               : bool                                                                    # when set to true causes the target's symbols to be
  extra_files                  : str | file | custom_tgt | custom_idx                                    # Not used for the build itself but are shown as source files in IDEs
  gnu_symbol_visibility        : str                                                                     # Specifies how symbols should be exported, see
  gui_app                      : bool                                                                    # When set to true flags this target as a GUI application
  implib                       : bool | str                                                              # When set to true, an import library is generated for the
  implicit_include_directories : bool                                                                    # Controls whether Meson adds the current source and build directories to the include path
  include_directories          : list[inc | str]                                                         # one or more objects created with the include_directories() function,
  install                      : bool                                                                    # When set to true, this executable should be installed
  install_dir                  : str                                                                     # override install directory for this file
  install_mode                 : list[str | int]                                                         # Specify the file mode in symbolic format
  install_rpath                : str                                                                     # A string to set the target's rpath to after install
  install_tag                  : str                                                                     # A string used by the `meson install --tags` command
  java_resources               : structured_src                                                          # Resources to be added to the jar
  link_args                    : list[str]                                                               # Flags to use during linking
  link_depends                 : str | file | custom_tgt | custom_idx                                    # Strings, files, or custom targets the link step depends on
  link_language                : str                                                                     # Makes the linker for this target be for the specified language
  link_whole                   : list[lib | custom_tgt | custom_idx]                                     # Links all contents of the given static libraries whether they are used or
  link_with                    : list[lib | custom_tgt | custom_idx]                                     # One or more shared or static libraries
  main_class                   : str                                                                     # Main class for running the built jar
  name_prefix                  : str | list[void]                                                        # The string that will be used as the prefix for the
  name_suffix                  : str | list[void]                                                        # The string that will be used as the extension for the
  native                       : bool                                                                    # Controls whether the target is compiled for the build or host machines
  objects                      : list[extracted_obj | file | str]                                        # List of object files that should be linked in this target
  override_options             : list[str] | dict[str | bool | int | list[str]]                            # takes an array of strings in the same format as `project`'s `default_options`
  pic                          : bool                                                                    # Builds the library as positional independent code
  pie                          : bool                                                                    # Build a position-independent executable
  prelink                      : bool                                                                    # If `true` the object files in the target will be prelinked,
  rust_abi                     : str                                                                     # Set the specific ABI to compile (when compiling rust)
  rust_crate_type              : str                                                                     # Set the specific type of rust crate to compile (when compiling rust)
  rust_dependency_map          : dict[str]                                                               # On rust targets this provides a map of library names to the crate name
  sources                      : str | file | custom_tgt | custom_idx | generated_list | structured_src  # Additional source files
  soversion                    : str | int                                                               # A string or integer specifying the soversion of this shared library,
  target_type                  : str                                                                     # The actual target type to build
  vala_args                    : list[str | file]                                                        # Compiler flags for Vala
  vala_shared_args             : list[str | file]                                                        # Arguments that are only passed to a shared library
  vala_static_args             : list[str | file]                                                        # Arguments that are only passed to a static library
  version                      : str                                                                     # A string specifying the version of this shared library,
  vs_module_defs               : str | file | custom_tgt | custom_idx                                    # Specify a Microsoft module definition file for controlling symbol exports,
  win_subsystem                : str                                                                     # Specifies the subsystem type to use
)

Argumente

Die Funktion build_target() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
zielname str

Der *eindeutige* Name des Build-Ziels

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (quelle...) vom Typ str | file | custom_tgt | custom_idx | generated_list.

Eingabequelle zum Kompilieren. Die folgenden Typen werden unterstützt

  • Zeichenketten relativ zum aktuellen Quellverzeichnis
  • file-Objekte, die in früheren Build-Dateien definiert wurden
  • Der Rückgabewert von Konfigurationszeit-Generatoren wie configure_file()
  • Der Rückgabewert von Build-Zeit-Generatoren wie custom_target() oder generator.process()

Diese Eingabedateien können Quellen, Objekte, Bibliotheken oder beliebige andere Dateien sein. Meson kategorisiert sie automatisch anhand der Erweiterung und verwendet sie entsprechend. Zum Beispiel werden Quellen (.c, .cpp, .vala, .rs usw.) kompiliert und Objekte (.o, .obj) und Bibliotheken (.so, .dll usw.) verknüpft.

Mit dem Ninja-Backend erstellt Meson eine Build-Zeit-Abhängigkeit (order-only dependency) für alle generierten Eingabedateien, einschließlich unbekannter Dateien. Dies ist notwendig, um die Generierung der tatsächlichen Abhängigkeiten in der von Ihrem Compiler generierten Depfile zu bootstrappen, um zu bestimmen, wann Quellen neu kompiliert werden müssen. Ninja stützt sich für alle Eingabedateien, generierten und nicht generierten, auf diese Abhängigkeitsdatei. Das Verhalten ist für andere Backends ähnlich.

Schließlich akzeptiert build_target() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
<lang>_args list[str]

Compiler-Flags für die angegebene Sprache; z. B. cpp_args für C++

<lang>_pch str

Vorkompilierte Header-Datei für die angegebene Sprache

<lang>_shared_args list[str]

Argumente, die nur an eine dynamische Bibliothek übergeben werden

(seit 1.3.0)

<lang>_static_args list[str]

Argumente, die nur an eine statische Bibliothek übergeben werden

(seit 1.3.0)

build_by_default bool

Wenn auf true gesetzt, wird dieses Ziel standardmäßig erstellt. Das bedeutet, es wird erstellt, wenn meson compile ohne Argumente aufgerufen wird. Der Standardwert ist true für alle Build-Zieltypen.

(seit 0.38.0)

Standard = true

build_rpath str

Eine Zeichenkette, die der RPATH-Definition des Ziels im Build-Verzeichnis hinzugefügt wird, aber bei der Installation entfernt wird

(seit 0.42.0)

d_debug list[str]

Die D-Versions-Identifikatoren, die während der Kompilierung von D-Quelldateien hinzugefügt werden sollen.

d_import_dirs list[inc | str]

Die Verzeichnisse, die zum String-Suchpfad hinzugefügt werden sollen (d. h. der -J-Schalter für DMD). Müssen inc-Objekte oder einfache Zeichenketten sein.

(seit 0.62.0)

d_module_versions list[str | int]

Liste der Modulversions-Identifikatoren, die beim Kompilieren von D-Quellen gesetzt werden.

d_unittest bool

Wenn true gesetzt, werden die D-Module im Debug-Modus kompiliert.

Standard = false

darwin_versions str | int | list[str]

Definiert die compatibility version und current version für die dylib unter macOS. Wenn eine Liste angegeben wird, muss sie null, ein oder zwei Elemente enthalten. Wenn nur ein Element angegeben wird oder es sich nicht um eine Liste handelt, wird der angegebene Wert zum Setzen der Kompatibilitäts- und aktuellen Version verwendet. Wenn nicht angegeben, wird die soversion wie nach den oben genannten Regeln verwendet.

(seit 0.48.0)

dependencies list[dep]

Ein oder mehrere Abhängigkeitsobjekte, die mit dependency() oder compiler.find_library() (für externe Abhängigkeiten) oder declare_dependency() (für vom Projekt erstellte Abhängigkeiten) erstellt wurden.

export_dynamic bool

Wenn auf true gesetzt, werden die Symbole des Ziels dynamisch exportiert, sodass Module, die mit der Funktion shared_module() erstellt wurden, auf Funktionen, Variablen und andere Symbole verweisen können, die im ausführbaren Programm selbst definiert sind. Impliziert das Argument implib.

(seit 0.45.0)

extra_files str | file | custom_tgt | custom_idx

Nicht für den Build selbst verwendet, aber in IDEs, die Dateien nach Zielen gruppieren (wie z. B. Visual Studio), als Quelldateien angezeigt.

gnu_symbol_visibility str

Gibt an, wie Symbole exportiert werden sollen, siehe z. B. das GCC-Wiki für weitere Informationen. Dieser Wert kann entweder eine leere Zeichenkette oder einer der Werte default, internal, hidden, protected oder inlineshidden sein, was dasselbe wie hidden ist, aber auch Dinge wie C++ implizite Konstruktoren wie im GCC-Handbuch beschrieben enthält. Ignoriert bei Compilern, die GNU Visibility-Argumente nicht unterstützen.

(seit 0.48.0)

gui_app bool

Wenn true gesetzt, kennzeichnet dieses Ziel als GUI-Anwendung auf Plattformen, wo dies einen Unterschied macht, veraltet seit 0.56.0, verwenden Sie stattdessen win_subsystem.

VERALTET

in 0.56.0

Standard = false

implib bool | str

Wenn auf true gesetzt, wird eine Importbibliothek für die ausführbare Datei generiert (der Name der Importbibliothek basiert auf exe_name). Alternativ, wenn auf einen String gesetzt, gibt dies den Basisnamen für die Importbibliothek an. Die Importbibliothek wird verwendet, wenn das zurückgegebene Build-Ziel-Objekt an anderer Stelle in link_with: erscheint. Hat nur dann eine Auswirkung, wenn dies auf Plattformen sinnvoll ist (z. B. Windows). Impliziert das Argument export_dynamic.

(seit 0.42.0)

implicit_include_directories bool

Steuert, ob Meson die aktuellen Quell- und Build-Verzeichnisse zum Include-Pfad hinzufügt

(seit 0.42.0)

Standard = true

include_directories list[inc | str]

Ein oder mehrere Objekte, die mit der Funktion include_directories() erstellt wurden, oder (seit 0.50.0) Zeichenketten, die transparent in Include-Verzeichnisobjekte erweitert werden.

installieren bool

Wenn true gesetzt, soll diese ausführbare Datei installiert werden.

Standard = false

install_dir str

Überschreibt das Installationsverzeichnis für diese Datei. Wenn der Wert ein relativer Pfad ist, wird er relativ zur Option prefix betrachtet. Wenn Sie beispielsweise Plugins in einem Unterverzeichnis installieren möchten, würden Sie so etwas verwenden: install_dir : get_option('libdir') / 'projectname-1.0'.

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und Gruppe/GID für die installierten Dateien an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

(seit 0.47.0)

install_rpath str

Eine Zeichenkette, die den RPATH des Ziels nach der Installation setzt (aber *nicht* davor). Unter Windows hat dieses Argument keine Wirkung.

install_tag str

Eine Zeichenkette, die vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge von Dateien zu installieren. Standardmäßig haben alle Build-Ziele den Tag runtime, mit Ausnahme von statischen Bibliotheken, die den Tag devel haben.

(seit 0.60.0)

java_resources structured_src

Ressourcen, die zum Jar hinzugefügt werden sollen

(seit 0.62.0)

main_class str

Hauptklasse zum Ausführen des kompilierten Jars

name_prefix str | list[void]

Die Zeichenkette, die als Präfix für den Ausgabedateinamen des Ziels verwendet wird, indem der Standard überschrieben wird (nur für Bibliotheken verwendet). Standardmäßig ist dies lib auf allen Plattformen und Compilern, außer bei MSVC-Shared-Bibliotheken, wo es zur Konvention weggelassen wird, und Cygwin-Shared-Bibliotheken, wo es cyg ist.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

name_suffix str | list[void]

Die Zeichenkette, die als Erweiterung für das Ziel verwendet wird, indem der Standard überschrieben wird. Standardmäßig ist unter Windows exe für ausführbare Dateien und auf anderen Plattformen wird es weggelassen.

Für dynamische Bibliotheken ist der Standardwert dylib unter macOS, dll unter Windows und so überall sonst. Für statische Bibliotheken ist es überall a. Konventionsgemäß verwenden MSVC-statische Bibliotheken die lib-Erweiterung, aber wir verwenden a, um eine mögliche Namenskollision mit dynamischen Bibliotheken zu vermeiden, die ebenfalls Importbibliotheken mit der Erweiterung lib generieren.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

native bool

Steuert, ob das Ziel für die Build- oder Host-Maschine kompiliert wird.

Standard = false

objekte list[extracted_obj | file | str]

Liste der Objektdateien, die in diesem Ziel verknüpft werden sollen.

Seit 1.1.0 kann dies generierte Dateien zusätzlich zu Objektdateien enthalten, für die Sie keine Quelle haben, oder die von anderen Build-Zielen erzeugte Objektdateien. In früheren Versionen mussten generierte Objektdateien in sources platziert werden.

override_options list[str] | dict[str | bool | int | list[str]]

Nimmt ein Array von Zeichenketten im selben Format wie die default_options von project, überschreibt die Werte dieser Optionen nur für dieses Ziel. (seit 1.2.0): Ein Dictionary kann jetzt übergeben werden.

(seit 0.40.0)

pic bool

Erstellt die Bibliothek als positionsunabhängigen Code (damit sie in eine dynamische Bibliothek gelinkt werden kann). Diese Option hat keine Auswirkung unter Windows und OS X, da sie unter Windows nicht sinnvoll ist und PIC unter OS X nicht deaktiviert werden kann.

(seit 0.36.0)

pie bool

Erstellt eine positionunabhängige ausführbare Datei.

(seit 0.49.0)

rust_abi str

Setzt die spezifische ABI, die kompiliert werden soll (beim Kompilieren von Rust).

  • 'rust' (Standard): Erzeugt ein "rlib" oder "dylib" Kiste, abhängig vom Typ der zu erstellenden Bibliothek.

  • 'c': Erzeugt eine "cdylib" oder "staticlib" Kiste, abhängig vom Typ der zu erstellenden Bibliothek.

(seit 1.3.0)

rust_crate_type str

Setzt den spezifischen Typ der zu kompilierenden Rust-Kiste (beim Kompilieren von Rust).

Wenn das Ziel eine executable() ist, ist der Standardwert "bin", der einzige erlaubte Wert.

Wenn es sich um eine static_library() handelt, ist der Standardwert "lib" und kann "lib", "staticlib" oder "rlib" sein. Wenn "lib", wählt Rustc einen Standardwert, "staticlib" bedeutet eine Bibliothek mit C-ABI, "rlib" bedeutet eine Bibliothek mit Rust-ABI.

Wenn es sich um eine shared_library() handelt, ist der Standardwert "lib" und kann "lib", "dylib", "cdylib" oder "proc-macro" sein. Wenn "lib", wählt Rustc einen Standardwert, "cdylib" bedeutet eine Bibliothek mit C-ABI, "dylib" bedeutet eine Bibliothek mit Rust-ABI, und "proc-macro" ist eine spezielle rust-prozedurale Makrokiste.

"proc-macro" ist neu in 0.62.0.

Seit 1.3.0 ist dies veraltet und ersetzt durch das Schlüsselwortargument "rust_abi". proc_macro-Kisten werden jetzt durch die Methode rust.proc_macro() behandelt.

(seit 0.42.0)

VERALTET

in 1.3.0

rust_dependency_map dict[str]

Bei Rust-Zielen bietet dies eine Zuordnung von Bibliotheksnamen zum Kistenamen, unter dem sie im Rust-Code verfügbar wären.

Dies ermöglicht Umbenennungen ähnlich der Abhängigkeitsumbenennungsfunktion von Cargo oder extern crate foo as bar im Rust-Code.

(seit 1.2.0)

sources str | file | custom_tgt | custom_idx | generated_list | structured_src

Zusätzliche Quellcodedateien. Ähnlich wie die Quellcode-Varargs.

soversion str | int

Eine Zeichenkette oder Ganzzahl, die die Soversion dieser dynamischen Bibliothek angibt, z. B. 0. Unter Linux und Windows wird dies verwendet, um die Soversion (oder eine Entsprechung) im Dateinamen festzulegen. Wenn soversion beispielsweise 4 ist, wird eine Windows-DLL foo-4.dll genannt und eine der Aliase der Linux-Shared-Bibliothek wäre libfoo.so.4. Wenn dies nicht angegeben wird, wird stattdessen der erste Teil von version verwendet (siehe unten). Wenn beispielsweise version 3.6.0 ist und soversion nicht definiert ist, wird es auf 3 gesetzt.

target_type str

Der tatsächliche zu erstellende Zieltyp

vala_args list[str | file]

Compiler-Flags für Vala. Im Gegensatz zu anderen Sprachen können diese Dateien enthalten

vala_shared_args list[str | file]

Argumente, die nur an eine dynamische Bibliothek übergeben werden. Ähnlich wie vala_args ist files() zusätzlich zu Zeichenketten erlaubt

(seit 1.3.0)

vala_static_args list[str | file]

Argumente, die nur an eine statische Bibliothek übergeben werden. Ähnlich wie vala_args ist files() zusätzlich zu Zeichenketten erlaubt

(seit 1.3.0)

Version str

Ein String, der die Version dieser Shared Library angibt, z. B. 1.1.0. Unter Linux und OS X wird dies verwendet, um die Version der Shared Library im Dateinamen festzulegen, z. B. libfoo.so.1.1.0 und libfoo.1.1.0.dylib. Wenn dies nicht angegeben ist, wird stattdessen soversion verwendet (siehe oben).

vs_module_defs str | file | custom_tgt | custom_idx

Gibt eine Microsoft-Moduldefinitionsdatei zur Steuerung von Symbol-Exporten usw. auf Plattformen an, auf denen dies möglich ist (z. B. Windows).

Dies kann verwendet werden, um offenzulegen, welche Funktionen ein von einer ausführbaren Datei geladenes shared_module verwenden darf.

(seit 1.3.0)

win_subsystem str

Gibt den Subsystemtyp für die Windows-Plattform an. Typische Werte sind console für Textmodusprogramme und windows für GUI-Anwendungen. Der Wert kann auch eine Versionsangabe enthalten, z. B. windows,6.0. Die vollständige Liste finden Sie in der MSDN-Dokumentation.

(seit 0.56.0)

Standard = 'console'


configuration_data()

Erstellt ein leeres Konfigurationsobjekt. Sie sollten Ihre Konfiguration mit Methodenaufrufen von cfg_data hinzufügen und sie schließlich in einem Aufruf von configure_file() verwenden.

Signatur

# Creates an empty configuration object
cfg_data configuration_data(
  dict[str | bool | int] [data],   # Optional dictionary to specify an initial data set
)

Argumente

Die Funktion configuration_data() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
data dict[str | bool | int]

Optionales Wörterbuch zur Angabe eines anfänglichen Datensatzes. Wenn angegeben, wird jedes Schlüssel-Wert-Paar in das cfg_data-Objekt eingefügt, als ob die Methode cfg_data.set() für jeden von ihnen aufgerufen worden wäre.

(seit 0.49.0)

[optional]


configure_file()

Diese Funktion kann in drei Modi ausgeführt werden, abhängig von den übergebenen Schlüsselwortargumenten.

Wenn ein cfg_data-Objekt an das Schlüsselwortargument configuration: übergeben wird, nimmt es eine Vorlagendatei als input: (optional) und erzeugt die output: (erforderlich), indem Werte aus den Konfigurationsdaten ersetzt werden, wie in der Dokumentation zur Konfigurationsdatei beschrieben. (seit 0.49.0) Anstelle eines cfg_data-Objekts kann ein Wörterbuch übergeben werden.

Wenn eine Liste von Strings an das Schlüsselwortargument command: übergeben wird, nimmt sie jede Quelldatei oder konfigurierte Datei als input: und geht davon aus, dass die output: durch Ausführen des angegebenen Befehls erzeugt wird.

(seit 0.47.0) Wenn das Schlüsselwortargument copy: auf true gesetzt ist, kopiert diese Funktion die in input: bereitgestellte Datei in eine Datei im Build-Verzeichnis mit dem Namen output: im aktuellen Verzeichnis.

Signatur

# This function can run in three modes depending on the keyword arguments
file configure_file(
  capture       : bool                               # When this argument is set to true,
  command       : list[str | file]                   # As explained above, if specified, Meson does not create
  configuration : cfg_data | dict[str | int | bool]  # As explained above, when passed this will provide the replacement
  copy          : bool                               # As explained above, if specified Meson only
  depfile       : str                                # A dependency file that the command can write listing
  encoding      : str                                # Set the file encoding for the input and output file
  format        : str                                # The format of defines
  input         : str | file                         # The input file name
  install       : bool                               # When true, this generated file is installed during
  install_dir   : str                                # The subdirectory to install the generated file to
  install_mode  : list[str | int]                    # Specify the file mode in symbolic format
  install_tag   : str                                # A string used by the `meson install --tags` command
  macro_name    : str                                # When specified, macro guards will be used instead of '#pragma once'
  output        : str                                # The output file name
  output_format : str                                # The format of the output to generate when no input
)
Warnung

Das Schlüsselwortargument install_mode ignorierte Ganzzahlwerte zwischen 0.62 und 1.1.0.

Argumente

Die Funktion configure_file() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
capture bool

Wenn dieses Argument auf true gesetzt ist, erfasst Meson stdout des command und schreibt es in die als output angegebene Zieldatei.

(seit 0.41.0)

Standard = false

command list[str | file]

Wie oben erläutert, wenn dies angegeben ist, erstellt Meson die Datei nicht selbst, sondern führt den angegebenen Befehl aus, was Ihnen eine vollständig benutzerdefinierte Dateigenerierung ermöglicht. (seit 0.52.0) Der Befehl kann Dateiobjekte enthalten und mehr als eine Datei kann dem Schlüsselwortargument input übergeben werden. Einzelheiten zu Zeichenfolgenersetzungen finden Sie unter custom_target().

configuration cfg_data | dict[str | int | bool]

Wie oben erläutert, liefert dies beim Übergeben die Ersetzungsdaten für die Eingabedatei (falls vorhanden) oder Schlüssel-Wert-Paare, die in die Ausgabe geschrieben werden sollen.

copy bool

Wie oben erläutert, kopiert Meson die Datei von Input nach Output, wenn dies angegeben ist.

(seit 0.47.0)

Standard = false

depfile str

Eine Abhängigkeitsdatei, die der Befehl schreiben kann und die alle zusätzlichen Dateien auflistet, von denen dieses Ziel abhängt. Eine Änderung in einer dieser Dateien löst eine Neukonfiguration aus.

(seit 0.52.0)

encoding str

Legt die Dateikodierung für die Eingabe- und Ausgabedatei fest. Die unterstützten Kodierungen sind die von Python 3, siehe standard-encodings.

(seit 0.47.0)

Standard = 'utf-8'

format str

Das Format von Defines. Es ist standardmäßig 'meson' und ersetzt daher #mesondefine-Anweisungen und Variablen, die von @-Zeichen umschlossen sind. Sie können auch 'cmake' verwenden, um #cmakedefine-Anweisungen und Variablen mit der ${variable}-Syntax zu ersetzen. Schließlich können Sie 'cmake@' verwenden, wobei Ersetzungen auf #cmakedefine-Anweisungen und Variablen mit der @variable@-Syntax angewendet werden.

(seit 0.46.0)

Standard = 'meson'

input str | file

Der Name der Eingabedatei. Wenn er im Konfigurationsmodus nicht angegeben ist, werden alle Variablen im configuration:-Objekt (siehe oben) in die output:-Datei geschrieben.

installieren bool

Wenn true, wird diese generierte Datei während des Installationsschritts installiert und install_dir muss gesetzt und nicht leer sein. Wenn false, wird diese generierte Datei unabhängig vom Wert von install_dir nicht installiert. Wenn weggelassen, ist der Standardwert true, wenn install_dir gesetzt und nicht leer ist, andernfalls false.

(seit 0.50.0)

Standard = false

install_dir str

Das Unterverzeichnis, in das die generierte Datei installiert werden soll (z. B. share/myproject). Wenn weggelassen oder der Wert eines leeren Strings angegeben wird, wird die Datei nicht installiert.

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und Gruppe/GID für die installierten Dateien an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

(seit 0.47.0)

install_tag str

Ein String, der vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge der Dateien zu installieren. Standardmäßig hat die Datei kein Installations-Tag, was bedeutet, dass sie nicht installiert wird, wenn das Argument --tags angegeben wird.

(seit 0.60.0)

macro_name str

Wenn angegeben, werden Makroschutzvorrichtungen anstelle von '#pragma once' verwendet. Der Name des Makroschutzes ist der angegebene Name.

(seit 1.3.0)

output str

Der Name der Ausgabedatei. (seit 0.41.0) kann @PLAINNAME@ oder @BASENAME@-Ersetzungen enthalten, sowie (seit 1.5.0) ihre indizierten Versionen, wie @PLAINNAME0@ oder @BASENAME0@. Im Konfigurationsmodus werden die Berechtigungen der Eingabedatei (falls angegeben) auf die Ausgabedatei kopiert.

output_format str

Das Ausgabeformat, das generiert wird, wenn keine Eingabe angegeben wurde. Es ist standardmäßig c, wobei Präprozessordirektiven mit # präfixiert werden. Sie können auch nasm verwenden, wobei der Präfix % ist. (seit 1.3.0) Das json-Format kann ebenfalls verwendet werden.

(seit 0.47.0)


custom_target()

Erstellt ein benutzerdefiniertes Top-Level-Build-Ziel. Das einzige Positionsargument ist der Name dieses Ziels und es darf keine Pfadtrennzeichen (/ oder \) enthalten. Der Name des benutzerdefinierten Ziels wird möglicherweise nicht von jedem Backend verwendet. Beispielsweise funktioniert mit dem Ninja-Backend, subdir/meson.build mit dem folgenden Beispiel, ninja -C builddir foo oder ninja -C builddir subdir/foo nicht, sondern stattdessen ninja -C builddir subdir/file.txt. Jedoch ist meson compile subdir/foo akzeptiert.

custom_target('foo', output: 'file.txt', ...)

Seit 0.60.0 ist das Namensargument optional und wird standardmäßig auf den Basisnamen der ersten Ausgabe gesetzt (file.txt im obigen Beispiel).

Die Liste der Strings, die dem Schlüsselwortargument command übergeben werden, akzeptieren die folgenden speziellen String-Ersetzungen

  • @INPUT@: der vollständige Pfad zur Eingabe, die input übergeben wird. Wenn mehr als eine Eingabe angegeben ist, werden alle als separate Argumente substituiert, nur wenn der Befehl '@INPUT@' als alleinstehendes Argument verwendet. Beispielsweise würde dies nicht funktionieren: command : ['cp', './@INPUT@'], aber dies würde funktionieren: command : ['cp', '@INPUT@'].
  • @OUTPUT@: der vollständige Pfad zur Ausgabe, die output übergeben wird. Wenn mehr als eine Ausgabe angegeben ist, ist das Verhalten dasselbe wie bei @INPUT@.
  • @INPUT0@ @INPUT1@ ...: der vollständige Pfad zur Eingabe mit dem angegebenen Array-Index in input
  • @OUTPUT0@ @OUTPUT1@ ...: der vollständige Pfad zur Ausgabe mit dem angegebenen Array-Index in output
  • @OUTDIR@: der vollständige Pfad zum Verzeichnis, in das die Ausgabe(n) geschrieben werden müssen
  • @DEPFILE@: der vollständige Pfad zur Abhängigkeitsdatei, die an depfile übergeben wird
  • @PLAINNAME@: der Eingabedateiname, ohne Pfad
  • @PLAINNAME0@ @PLAINNAME1@ ... (seit 1.5.0): der Eingabedateiname ohne Pfad, mit dem angegebenen Array-Index in input
  • @BASENAME@: der Eingabedateiname, mit entfernt erweiterung
  • @BASENAME0@ @BASENAME1@ ... (seit 1.5.0): der Eingabedateiname mit entfernter Erweiterung, mit dem angegebenen Array-Index in input
  • @PRIVATE_DIR@ (seit 0.50.1): Pfad zu einem Verzeichnis, in dem das benutzerdefinierte Ziel alle seine temporären Dateien speichern muss.
  • @SOURCE_ROOT@: der Pfad zum Stammverzeichnis des Quellcodes. Abhängig vom Backend kann dies ein absoluter oder ein relativer Pfad zum aktuellen Arbeitsverzeichnis sein.
  • @BUILD_ROOT@: der Pfad zum Stammverzeichnis des Build-Verzeichnisses. Abhängig vom Backend kann dies ein absoluter oder ein relativer Pfad zum aktuellen Arbeitsverzeichnis sein.
  • @CURRENT_SOURCE_DIR@: dies ist das Verzeichnis, in dem sich die aktuell verarbeitete meson.build-Datei befindet. Abhängig vom Backend kann dies ein absoluter oder ein relativer Pfad zum aktuellen Arbeitsverzeichnis sein.

(seit 0.47.0) Das Schlüsselwortargument depfile akzeptiert auch die Ersetzungen @BASENAME@ und @PLAINNAME@.

Das zurückgegebene Objekt hat auch Methoden, die in custom_tgt dokumentiert sind.

Signatur

# Create a custom top level build target
custom_tgt custom_target(
  str [name],   # The *unique* id of the custom target

  # Keyword arguments:
  build_always       : bool                                       # If `true` this target is always considered out of
  build_always_stale : bool                                       # If `true` the target is always considered out of date
  build_by_default   : bool                                       # Causes, when set to true, to
  capture            : bool                                       # There are some compilers that can't be told to write
  command            : list[str | file | exe | external_program]  # Command to run to create outputs from inputs
  console            : bool                                       # Keyword argument conflicts with `capture`, and is meant
  depend_files       : list[str | file]                           # files (str,
  depends            : list[build_tgt | custom_tgt | custom_idx]  # Specifies that this target depends on the specified
  depfile            : str                                        # A dependency file that the command can write listing
  env                : env | list[str] | dict[str]                # environment variables to set, such as
  feed               : bool                                       # There are some compilers that can't be told to read
  input              : list[str | file]                           # List of source files
  install            : bool                                       # When true, one or more files of this target are installed during the install step (see `install_dir` for details)
  install_dir        : str | list[str | bool]                     # If only one install_dir is provided, all outputs are installed there
  install_mode       : list[str | int]                            # The file mode and optionally the owner/uid and group/gid
  install_tag        : list[str]                                  # A list of strings, one per output, used by the `meson install --tags` command
  output             : list[str]                                  # List of output files
)
Hinweis

Davon auszugehen, dass command: von einer POSIX sh-Shell ausgeführt wird, ist nicht portabel, insbesondere nicht unter Windows. Verwenden Sie stattdessen eine native: true executable() oder ein Python-Skript.

Warnung

Das Schlüsselwortargument install_mode ignorierte Ganzzahlwerte zwischen 0.60.0 und 1.1.0.

Argumente

Die Funktion custom_target() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
name str

Die eindeutige ID des benutzerdefinierten Ziels

Dieses Positionsargument ist seit 0.60.0 optional. Es wird standardmäßig auf den Basisnamen der ersten Ausgabe gesetzt.

[optional]

Schließlich akzeptiert custom_target() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
build_always bool

Wenn true, wird dieses Ziel immer als veraltet betrachtet und jedes Mal neu erstellt. Entspricht dem Setzen von build_always_stale und build_by_default auf true.

VERALTET

in 0.47.0

build_always_stale bool

Wenn true, wird das Ziel immer als veraltet betrachtet. Nützlich für Dinge wie Build-Zeitstempel oder Versionskontroll-Tags. Der zugehörige Befehl wird auch dann ausgeführt, wenn die Ausgaben aktuell sind.

(seit 0.47.0)

Standard = false

build_by_default bool

Bewirkt, wenn auf true gesetzt, dass dieses Ziel standardmäßig erstellt wird. Das bedeutet, dass es erstellt wird, wenn meson compile ohne Argumente aufgerufen wird. Der Standardwert ist false.

(seit 0.50.0) Wenn build_by_default explizit auf false gesetzt ist, überschreibt install dies nicht mehr. Wenn build_by_default nicht gesetzt ist, bestimmt install immer noch seinen Standardwert.

(seit 0.38.0)

capture bool

Es gibt einige Compiler, denen man nicht sagen kann, dass sie ihre Ausgabe in eine Datei schreiben, sondern stattdessen in die Standardausgabe. Wenn dieses Argument auf true gesetzt ist, erfasst Meson stdout und schreibt es in die Zieldatei. Beachten Sie, dass Ihre Befehlsargumentliste @OUTPUT@ nicht enthalten darf, wenn der Erfassungsmodus aktiv ist.

Standard = false

command list[str | file | exe | external_program]

Befehl, der ausgeführt werden soll, um Ausgaben aus Eingaben zu erstellen. Der Befehl kann aus Strings oder dem Rückgabewert von Funktionen bestehen, die dateiähnliche Objekte zurückgeben, wie z. B. find_program(), executable(), configure_file(), files(), custom_target() usw. Meson fügt automatisch die entsprechenden Abhängigkeiten für Ziele und Dateien ein, die in diesem Schlüsselwortargument aufgeführt sind. Hinweis: Geben Sie Befehle immer in Array-Form ['commandname', '-arg1', '-arg2'] an und nicht als String 'commandname -arg1 -arg2', da letzteres nicht funktioniert.

console bool

Schlüsselwortargument, das mit capture in Konflikt steht und für ressourcenintensive Befehle gedacht ist, die lange dauern. Mit dem Ninja-Backend fügt das Setzen dieses Arguments dieses Ziel dem console-Pool von Ninja hinzu, der spezielle Eigenschaften hat, wie z. B. die Nicht-Pufferung von stdout und die Serialisierung aller Ziele in diesem Pool.

(seit 0.48.0)

depend_files list[str | file]

Dateien (str, file oder der Rückgabewert von configure_file()), von denen dieses Ziel abhängt, aber die nicht im Schlüsselwortargument command aufgeführt sind. Nützlich zum Hinzufügen von Regen-Abhängigkeiten.

abhängig list[build_tgt | custom_tgt | custom_idx]

Gibt an, dass dieses Ziel von den angegebenen Ziel(en) abhängt, obwohl es keines davon als Befehlszeilenargument verwendet. Dies ist für Fälle gedacht, in denen Sie ein Werkzeug haben, das z. B. intern globt. Normalerweise sollten Sie die generierten Quellen als Eingaben angeben, und Meson richtet alle Abhängigkeiten automatisch ein (custom_idx war zwischen 0.60 und 1.4.0 nicht als Typ verfügbar).

depfile str

Eine Abhängigkeitsdatei, die der Befehl schreiben kann und die alle zusätzlichen Dateien auflistet, von denen dieses Ziel abhängt. Zum Beispiel würde ein C-Compiler alle Header-Dateien auflisten, die er inkludiert hat, und eine Änderung in einer dieser Dateien löst eine Neukompilierung aus.

(seit 0.47.0) die Ersetzungen @BASENAME@ und @PLAINNAME@ werden ebenfalls akzeptiert.

env env | list[str] | dict[str]

Umgebungsvariablen, die gesetzt werden sollen, wie z. B. {'NAME1': 'value1', 'NAME2': 'value2'} oder ['NAME1=value1', 'NAME2=value2'], oder ein env-Objekt, das eine ausgefeiltere Verwaltung der Umgebung ermöglicht.

(seit 0.57.0)

feed bool

Es gibt einige Compiler, denen man nicht sagen kann, dass sie ihre Eingaben aus einer Datei lesen, sondern stattdessen aus der Standardeingabe. Wenn dieses Argument auf true gesetzt ist, füttert Meson die Eingabedatei an stdin. Beachten Sie, dass Ihre Argumentliste @INPUT@ nicht enthalten darf, wenn der Feed-Modus aktiv ist.

(seit 0.59.0)

Standard = false

input list[str | file]

Liste der Quelldateien. (seit 0.41.0) die Liste wird abgeflacht.

installieren bool

Wenn true, werden ein oder mehrere Dateien dieses Ziels während des Installationsschritts installiert (siehe install_dir für Details).

install_dir str | list[str | bool]

Wenn nur ein install_dir angegeben ist, werden alle Ausgaben dort installiert. Seit 0.40.0 Ermöglicht die Angabe des Installationsverzeichnisses für jede entsprechende Ausgabe. Zum Beispiel

custom_target('different-install-dirs',
  output : ['first.file', 'second.file'],
  install : true,
  install_dir : ['somedir', 'otherdir'])

Dies würde first.file nach somedir und second.file nach otherdir installieren.

Um nur einige Ausgaben zu installieren, übergeben Sie false für die Ausgaben, die Sie nicht installieren möchten. Zum Beispiel

    custom_target('only-install-second',
      output : ['first.file', 'second.file'],
      install : true,
      install_dir : [false, 'otherdir'])

Dies würde second.file nach otherdir installieren und first.file nicht installieren.

install_mode list[str | int]

Der Dateimodus und optional der Besitzer/UID und die Gruppe/GID. Weitere Informationen finden Sie im Schlüsselwortargument install_mode von install_data().

(seit 0.47.0)

install_tag list[str]

Eine Liste von Strings, einer pro Ausgabe, die vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge der Dateien zu installieren.

Standardmäßig haben alle Ausgaben kein Installations-Tag, was bedeutet, dass sie nicht installiert werden, wenn das Argument --tags angegeben wird. Wenn nur ein Tag angegeben ist, wird angenommen, dass alle Ausgaben denselben Tag haben. false kann für Ausgaben verwendet werden, die keinen Tag haben oder nicht installiert werden.

(seit 0.60.0)

output list[str]

Liste der Ausgabedateien.


debug()

Schreibt den Argument-String in das Meson-Build-Log.

Signatur

(seit 0.63.0)

# Write the argument string to the meson build log
void debug(
  str | int | bool | list[str | int | bool] | dict[str | int | bool] message,     # The message to print
  str | int | bool | list[str | int | bool] | dict[str | int | bool] msg...,      # Additional parameters will be separated by spaces
)

Argumente

Die Funktion debug() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
Nachricht str | int | bool | list[str | int | bool] | dict[str | int | bool]

Die auszugebende Nachricht

Zusätzlich akzeptiert die Funktion zwischen 0 und infinity variable Argumente (msg...) vom Typ str | int | bool | list[str | int | bool] | dict[str | int | bool].

Zusätzliche Parameter werden durch Leerzeichen getrennt


declare_dependency()

Diese Funktion gibt ein dep-Objekt zurück, das sich wie der Rückgabewert von dependency() verhält, aber intern für den aktuellen Build ist. Der Hauptanwendungsfall hierfür sind Unterprojekte. Dies ermöglicht es einem Unterprojekt, einfach anzugeben, wie es verwendet werden soll. Dies macht es austauschbar mit derselben Abhängigkeit, die extern vom System bereitgestellt wird.

Signatur

# This function returns a dep object that
dep declare_dependency(
  compile_args        : list[str]                                                    # Compile arguments to use
  d_import_dirs       : list[inc | str]                                              # the directories to add to the string search path (i
  d_module_versions   : str | int | list[str | int]                                  # The [D version identifiers](https://dlang
  dependencies        : list[dep]                                                    # Other dependencies needed to use this dependency
  extra_files         : list[str | file]                                             # extra files to add to targets
  include_directories : list[inc | str]                                              # the directories to add to header search path,
  link_args           : list[str]                                                    # Link arguments to use
  link_whole          : list[lib]                                                    # Libraries to link fully, same as executable().
  link_with           : list[lib]                                                    # Libraries to link against
  objects             : list[extracted_obj]                                          # a list of object files, to be linked directly into the targets that use the
  sources             : list[str | file | custom_tgt | custom_idx | generated_list]  # sources to add to targets
  variables           : dict[str] | list[str]                                        # a dictionary of arbitrary strings,
  version             : str                                                          # the version of this dependency,
)

Argumente

Die Funktion declare_dependency() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
compile_args list[str]

Kompilierungsargumente, die verwendet werden sollen.

d_import_dirs list[inc | str]

Die Verzeichnisse, die zum String-Suchpfad hinzugefügt werden sollen (d. h. der -J-Schalter für DMD). Müssen inc-Objekte oder einfache Zeichenketten sein.

(seit 0.62.0)

d_module_versions str | int | list[str | int]

Die D-Versions-Identifikatoren, die während der Kompilierung von D-Quelldateien hinzugefügt werden sollen.

(seit 0.62.0)

dependencies list[dep]

Andere Abhängigkeiten, die zur Verwendung dieser Abhängigkeit benötigt werden.

extra_files list[str | file]

Zusätzliche Dateien, die zu Zielen hinzugefügt werden sollen, hauptsächlich für die IDE-Integration.

(seit 1.2.0)

include_directories list[inc | str]

die Verzeichnisse, die zum Header-Suchpfad hinzugefügt werden sollen, müssen inc-Objekte oder (seit 0.50.0) einfache Strings sein.

objekte list[extracted_obj]

eine Liste von Objektdateien, die direkt in die Ziele verknüpft werden sollen, die die Abhängigkeit verwenden.

(seit 1.1.0)

sources list[str | file | custom_tgt | custom_idx | generated_list]

Quellen, die zu Zielen hinzugefügt werden sollen (oder generierte Header-Dateien, die erstellt werden sollen, bevor Quellen, die sie einschließen, erstellt werden)

variables dict[str] | list[str]

ein Wörterbuch mit beliebigen Strings, das für die Verwendung in Unterprojekten gedacht ist, in denen spezielle Variablen über cmake oder pkg-config bereitgestellt würden. seit 0.56.0 kann es auch eine Liste von 'key=value'-Strings sein.

(seit 0.54.0)

Version str

die Version dieser Abhängigkeit, z. B. 1.2.3. Standardmäßig die Projektversion.


dependency()

Findet eine externe Abhängigkeit (normalerweise eine auf Ihrem System installierte Bibliothek) mit dem angegebenen Namen mit pkg-config und mit CMake, wenn pkg-config fehlschlägt. Zusätzlich werden Frameworks (nur OSX) und bibliothekspezifische Fallback-Erkennungslogik unterstützt.

Seit 0.60.0 können mehr als ein Name angegeben werden, sie werden der Reihe nach versucht und der erste gefundene Name wird verwendet. Das Fallback-Unterprojekt wird nur verwendet, wenn keiner der Namen gefunden wird. Sobald einer der Namen gefunden wurde, werden alle anderen Namen in den Cache aufgenommen, sodass nachfolgende Aufrufe für einen dieser Namen denselben Wert zurückgeben. Dies ist nützlich, wenn eine Abhängigkeit unterschiedliche Namen haben könnte, z. B. png und libpng.

  • Seit 0.64.0 kann ein Abhängigkeits-Fallback über WrapDB bereitgestellt werden. Laden Sie einfach die Datenbank lokal mit dem Befehl meson wrap update-db herunter, und Meson greift automatisch auf von WrapDB bereitgestellte Unterprojekte zurück, wenn die Abhängigkeit nicht im System gefunden wird und das Projekt keine eigene .wrap-Datei mitliefert.

Abhängigkeiten können auch auf zwei andere Arten aufgelöst werden

  • wenn derselbe Name vor dem Aufruf von dependency in einem meson.override_dependency verwendet wurde, wird die überschreibende Abhängigkeit bedingungslos zurückgegeben; d.h., die überschreibende Abhängigkeit wird unabhängig davon verwendet, ob eine externe Abhängigkeit im System installiert ist. Typischerweise wird meson.override_dependency von einem Unterprojekt verwendet worden sein.

  • durch ein Fallback-Unterprojekt, das bei Bedarf in die aktuelle Build-Spezifikation einbezogen wird, als ob subproject() aufgerufen worden wäre. Das Unterprojekt kann mit dem Argument fallback angegeben werden. Alternativ, wenn das Argument fallback fehlt, kann Meson seit 0.55.0 ein Unterprojekt automatisch als Fallback identifizieren, wenn eine Wrap-Datei die Abhängigkeit bereitstellt, oder wenn ein Unterprojekt denselben Namen wie die Abhängigkeit hat. In letzterem Fall muss das Unterprojekt meson.override_dependency verwenden, um die Ersetzung anzugeben, sonst meldet Meson einen schwerwiegenden Fehler. Siehe die Wrap-Dokumentation für weitere Details. Diese automatische Suche kann über das Schlüsselwortargument allow_fallback gesteuert werden.

Wenn dependency_name '' ist, wird die Abhängigkeit immer nicht gefunden. Mit required: false gibt dies immer ein Abhängigkeitsobjekt zurück, für das die Methode found() false zurückgibt und das wie jede andere Abhängigkeit an das Schlüsselwortargument dependencies: eines build_target übergeben werden kann. Dies kann verwendet werden, um eine Abhängigkeit zu implementieren, die manchmal nicht erforderlich ist, z. B. in einigen Zweigen einer Bedingung, oder mit einem fallback:-Schlüsselwort kann es verwendet werden, um eine optionale Abhängigkeit zu deklarieren, die nur im angegebenen Unterprojekt sucht und nur, wenn dies durch --wrap-mode erlaubt ist.

Das zurückgegebene Objekt dep hat auch zusätzliche Methoden.

Signatur

# Finds an external dependency (usually a library installed on your
dep dependency(
  str names...,  # The names of the dependency to look up

  # Keyword arguments:
  allow_fallback    : bool                                          # Specifies whether Meson should automatically pick a fallback subproject
  default_options   : list[str] | dict[str | bool | int | list[str]]  # An array of default option values
  disabler          : bool                                          # Returns a disabler() object instead of a not-found dependency
  fallback          : list[str] | str                               # Manually specifies a subproject fallback
  include_type      : str                                           # An enum flag, marking how the dependency
  language          : str                                           # Defines what language-specific dependency to find
  method            : str                                           # Defines the way the dependency is detected, the default is
  native            : bool                                          # If set to `true`, causes Meson to find the dependency on
  not_found_message : str                                           # An optional string that will be printed as a message() if the dependency was not found.
  required          : bool | feature                                # When set to `false`, Meson will proceed with the build
  static            : bool                                          # Tells the dependency provider to try to get static
  version           : list[str] | str                               # Specifies the required version,
)
Hinweis

Diese Funktion unterstützt zusätzliche bibliothekspezifische Schlüsselwortargumente, die ebenfalls akzeptiert werden können (z. B. modules gibt Untermodule an, die für Abhängigkeiten wie Qt5 oder Boost verwendet werden sollen. components ermöglicht dem Benutzer, manuell CMake COMPONENTS für die find_package-Suche hinzuzufügen).

Argumente

Die Funktion akzeptiert zwischen 1 und infinity variable Argumente (names...) vom Typ str.

Die Namen der zu suchenden Abhängigkeit. Die Abhängigkeiten werden in der Reihenfolge gesucht, in der sie hier angegeben sind. Die erste gefundene Abhängigkeit wird dann verwendet. Das Fallback-Unterprojekt wird nur verwendet, wenn keiner der Namen im System gefunden wird. Sobald einer der Namen gefunden wurde, werden alle anderen Namen in den Cache aufgenommen, sodass nachfolgende Aufrufe für einen dieser Namen denselben Wert zurückgeben. Dies ist nützlich, wenn eine Abhängigkeit unterschiedliche Namen haben könnte, z. B. png und libpng.

HINWEIS: Vor 0.60.0 war nur ein einzelner Abhängigkeitsname erlaubt.

(seit 0.60.0)

Die Funktion dependency() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
allow_fallback bool

Gibt an, ob Meson automatisch ein Fallback-Unterprojekt auswählen soll, falls die Abhängigkeit nicht im System gefunden wird. Wenn true und die Abhängigkeit nicht im System gefunden wird, greift Meson auf ein Unterprojekt zurück, das diese Abhängigkeit bereitstellt. Wenn false, wird Meson nicht zurückgreifen, auch wenn ein Unterprojekt diese Abhängigkeit bereitstellt. Standardmäßig tut Meson dies, wenn required true ist oder enabled; siehe die Wrap-Dokumentation für weitere Details.

(seit 0.56.0)

default_options list[str] | dict[str | bool | int | list[str]]

Eine Liste von Standardoptionswerten, die diejenigen überschreiben, die in der meson.options des Unterprojekts festgelegt sind (wie default_options in project(), sie haben nur dann Auswirkungen, wenn Meson zum ersten Mal ausgeführt wird, und Befehlszeilenargumente überschreiben alle Standardoptionen in Build-Dateien) (seit 1.2.0): Ein Wörterbuch kann jetzt übergeben werden.

(seit 0.38.0)

disabler bool

Gibt ein disabler()-Objekt anstelle einer nicht gefundenen Abhängigkeit zurück, wenn dieses Schlüsselwortargument auf true gesetzt ist und die Abhängigkeit nicht gefunden werden konnte.

(seit 0.49.0)

Standard = false

fallback list[str] | str

Gibt manuell ein Unterprojekt-Fallback an, das verwendet werden soll, falls die Abhängigkeit nicht im System gefunden wird. Dies ist nützlich, wenn die automatische Suche nicht zutreffend ist oder wenn Sie ältere Meson-Versionen als 0.55.0 unterstützen möchten. Wenn der Wert ein Array ['subproj_name', 'subproj_dep'] ist, ist der erste Wert der Name des Unterprojekts und der zweite der Variablenname in diesem Unterprojekt, der ein Abhängigkeitsobjekt enthält, wie z. B. der Rückgabewert von declare_dependency() oder dependency() usw. Beachten Sie, dass das Fallback-Abhängigkeitsobjekt eine nicht gefundene Abhängigkeit sein kann, in welchem Fall der Wert des Schlüsselwortarguments required: befolgt wird. Seit 0.54.0 kann der Wert ein einzelner String sein, der Name des Unterprojekts; in diesem Fall muss das Unterprojekt meson.override_dependency('dependency_name', subproj_dep) verwenden, um das Abhängigkeitsobjekt anzugeben, das im Oberprojekt verwendet wird. Wenn der Wert eine leere Liste ist, hat er die gleiche Wirkung wie allow_fallback: false.

include_type str

Ein Enum-Flag, das markiert, wie die Abhängigkeitsflags konvertiert werden sollen. Unterstützte Werte sind 'preserve', 'system' und 'non-system'. Systemabhängigkeiten können auf einigen Plattformen anders behandelt werden, z. B. mit -isystem anstelle von -I, wo möglich. Wenn include_type auf 'preserve' gesetzt ist, wird keine zusätzliche Konvertierung durchgeführt.

(seit 0.52.0)

Standard = 'preserve'

language str

Gibt an, welche sprachspezifische Abhängigkeit gefunden werden soll, wenn sie für mehrere Sprachen verfügbar ist.

(seit 0.42.0)

method str

Definiert die Methode zur Erkennung der Abhängigkeit, der Standard ist auto, kann aber z. B. auf qmake für die Qt-Entwicklung überschrieben werden, und unterschiedliche Abhängigkeiten unterstützen unterschiedliche Werte dafür (obwohl auto bei allen funktioniert)

(seit 0.40.0)

Standard = 'auto'

native bool

Wenn auf true gesetzt, veranlasst dies Meson, die Abhängigkeit auf dem Build-Computer und nicht auf dem Host-System zu finden (d.h. dort, wo die cross-kompilierte Binärdatei ausgeführt wird), normalerweise nur erforderlich, wenn Sie ein Tool erstellen, das während der Kompilierung verwendet werden soll.

Standard = false

not_found_message str

Ein optionaler String, der als message() ausgegeben wird, wenn die Abhängigkeit nicht gefunden wurde.

(seit 0.50.0)

erforderlich bool | feature

Wenn auf false gesetzt, fährt Meson mit dem Build fort, auch wenn die Abhängigkeit nicht gefunden wird.

Wenn auf ein feature-Option gesetzt, steuert das Feature, ob danach gesucht wird und ob ein Fehler auftritt, wenn es nicht gefunden wird.

(seit 0.47.0) Der Wert einer feature-Option kann ebenfalls übergeben werden.

Standard = true

static bool

Weist den Anbieter der Abhängigkeit an, zu versuchen, statische Bibliotheken anstelle von dynamischen zu erhalten (beachten Sie, dass dies nicht von allen Abhängigkeits-Backends unterstützt wird).

Seit 0.60.0 setzt es auch die Option default_library entsprechend im Fallback-Unterprojekt, wenn sie nicht explizit im Schlüsselwortargument default_options angegeben wurde.

Seit 0.63.0 wenn die Option prefer_static auf true gesetzt ist, ist der Standardwert true, andernfalls ist der Standardwert false.

Version list[str] | str

Gibt die erforderliche Version an, ein String, der einen Vergleichsoperator gefolgt von der Versionszeichenfolge enthält, Beispiele sind >1.0.0, <=2.3.5 oder 3.1.4 für exakte Übereinstimmung. Sie können auch mehrere Einschränkungen angeben, indem Sie eine Liste an dieses Schlüsselwortargument übergeben, wie z. B.: ['>=3.14.0', '<=4.1.0']. Diese Anforderungen werden niemals erfüllt, wenn die Version unbekannt ist.

(seit 0.37.0)


disabler()

Gibt ein disabler-Objekt zurück.

Signatur

(seit 0.44.0)

disabler disabler()


environment()

Gibt ein leeres env-Objekt zurück.

Signatur

(seit 0.35.0)

# Returns an empty env object.
env environment(
  str | list[str] | dict[str] | dict[list[str]] [env],   # If provided, each key/value pair is added into the env object

  # Keyword arguments:
  method    : str  # Must be one of 'set', 'prepend', or 'append'
  separator : str  # The separator to use for the initial values defined in
)

Argumente

Die Argumentabflachung wird von dieser Funktion NICHT UNTERSTÜTZT.

Die Funktion environment() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
env str | list[str] | dict[str] | dict[list[str]]

Falls bereit, werden die Schlüssel/Wert-Paare dem env-Objekt hinzugefügt, als ob die Methode env.set() für jedes davon aufgerufen worden wäre. Seit Version 0.62.0 ist eine Liste von Strings in Wörterbuchwerten zulässig. In diesem Fall werden die Werte mit dem Trennzeichen verbunden.

(seit 0.52.0)

[optional]

Schließlich akzeptiert environment() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
method str

Muss entweder 'set', 'prepend' oder 'append' sein (Standard ist 'set'). Steuert, ob die im ersten Positionsargument definierten Anfangswerte dem Umgebungsvariablenwert vorangestellt, angehängt oder diesen ersetzen.

(seit 0.62.0)

separator str

Das Trennzeichen, das für die im ersten Positionsargument definierten Anfangswerte verwendet werden soll. Wenn es nicht explizit angegeben wird, wird das Standard-Pfadtrennzeichen des Host-Betriebssystems verwendet, d. h. ';' für Windows und ':' für UNIX/POSIX-Systeme.

(seit 0.62.0)


error()

Gibt den Argument-String aus und stoppt den Build-Prozess.

Signatur

# Print the argument string and halts the build process
void error(
  str message,     # The message to print
  str msg...,      # Additional parameters will be separated by spaces
)

Argumente

Die Argumentabflachung wird von dieser Funktion NICHT UNTERSTÜTZT.

Die Funktion error() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
Nachricht str

Die auszugebende Nachricht

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (msg...) vom Typ str.

Zusätzliche Parameter werden durch Leerzeichen getrennt

(seit 0.58.0)


executable()

Erstellt eine neue ausführbare Datei. Das erste Argument gibt ihren Namen an und die restlichen Positionsargumente definieren die zu verwendenden Eingabedateien.

Die Listen für die Schlüsselwortargumente (wie sources, objects und dependencies) werden immer abgeflacht, was bedeutet, dass Sie beim Erstellen der endgültigen Liste Listen beliebig verschachteln und hinzufügen können.

Das zurückgegebene Objekt hat auch Methoden, die in exe dokumentiert sind.

Seit 1.3.0 können ausführbare Dateinamen für mehrere Ziele gleich sein, solange jedes eine andere name_suffix hat.

Signatur

# Creates a new executable
exe executable(
  str                                                   target_name,     # The *unique* name of the build target
  str | file | custom_tgt | custom_idx | generated_list source...,       # Input source to compile

  # Keyword arguments:
  <lang>_args                  : list[str]                                                               # compiler flags to use for the given language;
  <lang>_pch                   : str                                                                     # precompiled header file to use for the given language
  build_by_default             : bool                                                                    # Causes, when set to `true`, to have this target be built by default
  build_rpath                  : str                                                                     # A string to add to target's rpath definition in the build dir,
  d_debug                      : list[str]                                                               # The [D version identifiers](https://dlang
  d_import_dirs                : list[inc | str]                                                         # the directories to add to the string search path (i
  d_module_versions            : list[str | int]                                                         # List of module version identifiers set when compiling D sources
  d_unittest                   : bool                                                                    # When set to true, the D modules are compiled in debug mode
  dependencies                 : list[dep]                                                               # one or more dependency objects
  export_dynamic               : bool                                                                    # when set to true causes the target's symbols to be
  extra_files                  : str | file | custom_tgt | custom_idx                                    # Not used for the build itself but are shown as source files in IDEs
  gnu_symbol_visibility        : str                                                                     # Specifies how symbols should be exported, see
  gui_app                      : bool                                                                    # When set to true flags this target as a GUI application
  implib                       : bool | str                                                              # When set to true, an import library is generated for the
  implicit_include_directories : bool                                                                    # Controls whether Meson adds the current source and build directories to the include path
  include_directories          : list[inc | str]                                                         # one or more objects created with the include_directories() function,
  install                      : bool                                                                    # When set to true, this executable should be installed
  install_dir                  : str                                                                     # override install directory for this file
  install_mode                 : list[str | int]                                                         # Specify the file mode in symbolic format
  install_rpath                : str                                                                     # A string to set the target's rpath to after install
  install_tag                  : str                                                                     # A string used by the `meson install --tags` command
  link_args                    : list[str]                                                               # Flags to use during linking
  link_depends                 : str | file | custom_tgt | custom_idx                                    # Strings, files, or custom targets the link step depends on
  link_language                : str                                                                     # Makes the linker for this target be for the specified language
  link_whole                   : list[lib | custom_tgt | custom_idx]                                     # Links all contents of the given static libraries whether they are used or
  link_with                    : list[lib | custom_tgt | custom_idx]                                     # One or more shared or static libraries
  name_prefix                  : str | list[void]                                                        # The string that will be used as the prefix for the
  name_suffix                  : str | list[void]                                                        # The string that will be used as the extension for the
  native                       : bool                                                                    # Controls whether the target is compiled for the build or host machines
  objects                      : list[extracted_obj | file | str]                                        # List of object files that should be linked in this target
  override_options             : list[str] | dict[str | bool | int | list[str]]                            # takes an array of strings in the same format as `project`'s `default_options`
  pie                          : bool                                                                    # Build a position-independent executable
  rust_crate_type              : str                                                                     # Set the specific type of rust crate to compile (when compiling rust)
  rust_dependency_map          : dict[str]                                                               # On rust targets this provides a map of library names to the crate name
  sources                      : str | file | custom_tgt | custom_idx | generated_list | structured_src  # Additional source files
  vala_args                    : list[str | file]                                                        # Compiler flags for Vala
  vs_module_defs               : str | file | custom_tgt | custom_idx                                    # Specify a Microsoft module definition file for controlling symbol exports,
  win_subsystem                : str                                                                     # Specifies the subsystem type to use
)
Warnung

Der Parameter link_language war bis 0.55.0 fehlerhaft

Argumente

Die Funktion executable() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
zielname str

Der *eindeutige* Name des Build-Ziels

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (quelle...) vom Typ str | file | custom_tgt | custom_idx | generated_list.

Eingabequelle zum Kompilieren. Die folgenden Typen werden unterstützt

  • Zeichenketten relativ zum aktuellen Quellverzeichnis
  • file-Objekte, die in früheren Build-Dateien definiert wurden
  • Der Rückgabewert von Konfigurationszeit-Generatoren wie configure_file()
  • Der Rückgabewert von Build-Zeit-Generatoren wie custom_target() oder generator.process()

Diese Eingabedateien können Quellen, Objekte, Bibliotheken oder beliebige andere Dateien sein. Meson kategorisiert sie automatisch anhand der Erweiterung und verwendet sie entsprechend. Zum Beispiel werden Quellen (.c, .cpp, .vala, .rs usw.) kompiliert und Objekte (.o, .obj) und Bibliotheken (.so, .dll usw.) verknüpft.

Mit dem Ninja-Backend erstellt Meson eine Build-Zeit-Abhängigkeit (order-only dependency) für alle generierten Eingabedateien, einschließlich unbekannter Dateien. Dies ist notwendig, um die Generierung der tatsächlichen Abhängigkeiten in der von Ihrem Compiler generierten Depfile zu bootstrappen, um zu bestimmen, wann Quellen neu kompiliert werden müssen. Ninja stützt sich für alle Eingabedateien, generierten und nicht generierten, auf diese Abhängigkeitsdatei. Das Verhalten ist für andere Backends ähnlich.

Schließlich akzeptiert executable() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
<lang>_args list[str]

Compiler-Flags für die angegebene Sprache; z. B. cpp_args für C++

<lang>_pch str

Vorkompilierte Header-Datei für die angegebene Sprache

build_by_default bool

Wenn auf true gesetzt, wird dieses Ziel standardmäßig erstellt. Das bedeutet, es wird erstellt, wenn meson compile ohne Argumente aufgerufen wird. Der Standardwert ist true für alle Build-Zieltypen.

(seit 0.38.0)

Standard = true

build_rpath str

Eine Zeichenkette, die der RPATH-Definition des Ziels im Build-Verzeichnis hinzugefügt wird, aber bei der Installation entfernt wird

(seit 0.42.0)

d_debug list[str]

Die D-Versions-Identifikatoren, die während der Kompilierung von D-Quelldateien hinzugefügt werden sollen.

d_import_dirs list[inc | str]

Die Verzeichnisse, die zum String-Suchpfad hinzugefügt werden sollen (d. h. der -J-Schalter für DMD). Müssen inc-Objekte oder einfache Zeichenketten sein.

(seit 0.62.0)

d_module_versions list[str | int]

Liste der Modulversions-Identifikatoren, die beim Kompilieren von D-Quellen gesetzt werden.

d_unittest bool

Wenn true gesetzt, werden die D-Module im Debug-Modus kompiliert.

Standard = false

dependencies list[dep]

Ein oder mehrere Abhängigkeitsobjekte, die mit dependency() oder compiler.find_library() (für externe Abhängigkeiten) oder declare_dependency() (für vom Projekt erstellte Abhängigkeiten) erstellt wurden.

export_dynamic bool

Wenn auf true gesetzt, werden die Symbole des Ziels dynamisch exportiert, sodass Module, die mit der Funktion shared_module() erstellt wurden, auf Funktionen, Variablen und andere Symbole verweisen können, die im ausführbaren Programm selbst definiert sind. Impliziert das Argument implib.

(seit 0.45.0)

extra_files str | file | custom_tgt | custom_idx

Nicht für den Build selbst verwendet, aber in IDEs, die Dateien nach Zielen gruppieren (wie z. B. Visual Studio), als Quelldateien angezeigt.

gnu_symbol_visibility str

Gibt an, wie Symbole exportiert werden sollen, siehe z. B. das GCC-Wiki für weitere Informationen. Dieser Wert kann entweder eine leere Zeichenkette oder einer der Werte default, internal, hidden, protected oder inlineshidden sein, was dasselbe wie hidden ist, aber auch Dinge wie C++ implizite Konstruktoren wie im GCC-Handbuch beschrieben enthält. Ignoriert bei Compilern, die GNU Visibility-Argumente nicht unterstützen.

(seit 0.48.0)

gui_app bool

Wenn true gesetzt, kennzeichnet dieses Ziel als GUI-Anwendung auf Plattformen, wo dies einen Unterschied macht, veraltet seit 0.56.0, verwenden Sie stattdessen win_subsystem.

VERALTET

in 0.56.0

Standard = false

implib bool | str

Wenn auf true gesetzt, wird eine Importbibliothek für die ausführbare Datei generiert (der Name der Importbibliothek basiert auf exe_name). Alternativ, wenn auf einen String gesetzt, gibt dies den Basisnamen für die Importbibliothek an. Die Importbibliothek wird verwendet, wenn das zurückgegebene Build-Ziel-Objekt an anderer Stelle in link_with: erscheint. Hat nur dann eine Auswirkung, wenn dies auf Plattformen sinnvoll ist (z. B. Windows). Impliziert das Argument export_dynamic.

(seit 0.42.0)

implicit_include_directories bool

Steuert, ob Meson die aktuellen Quell- und Build-Verzeichnisse zum Include-Pfad hinzufügt

(seit 0.42.0)

Standard = true

include_directories list[inc | str]

Ein oder mehrere Objekte, die mit der Funktion include_directories() erstellt wurden, oder (seit 0.50.0) Zeichenketten, die transparent in Include-Verzeichnisobjekte erweitert werden.

installieren bool

Wenn true gesetzt, soll diese ausführbare Datei installiert werden.

Standard = false

install_dir str

Überschreibt das Installationsverzeichnis für diese Datei. Wenn der Wert ein relativer Pfad ist, wird er relativ zur Option prefix betrachtet. Wenn Sie beispielsweise Plugins in einem Unterverzeichnis installieren möchten, würden Sie so etwas verwenden: install_dir : get_option('libdir') / 'projectname-1.0'.

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und Gruppe/GID für die installierten Dateien an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

(seit 0.47.0)

install_rpath str

Eine Zeichenkette, die den RPATH des Ziels nach der Installation setzt (aber *nicht* davor). Unter Windows hat dieses Argument keine Wirkung.

install_tag str

Eine Zeichenkette, die vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge von Dateien zu installieren. Standardmäßig haben alle Build-Ziele den Tag runtime, mit Ausnahme von statischen Bibliotheken, die den Tag devel haben.

(seit 0.60.0)

name_prefix str | list[void]

Die Zeichenkette, die als Präfix für den Ausgabedateinamen des Ziels verwendet wird, indem der Standard überschrieben wird (nur für Bibliotheken verwendet). Standardmäßig ist dies lib auf allen Plattformen und Compilern, außer bei MSVC-Shared-Bibliotheken, wo es zur Konvention weggelassen wird, und Cygwin-Shared-Bibliotheken, wo es cyg ist.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

name_suffix str | list[void]

Die Zeichenkette, die als Erweiterung für das Ziel verwendet wird, indem der Standard überschrieben wird. Standardmäßig ist unter Windows exe für ausführbare Dateien und auf anderen Plattformen wird es weggelassen.

Für dynamische Bibliotheken ist der Standardwert dylib unter macOS, dll unter Windows und so überall sonst. Für statische Bibliotheken ist es überall a. Konventionsgemäß verwenden MSVC-statische Bibliotheken die lib-Erweiterung, aber wir verwenden a, um eine mögliche Namenskollision mit dynamischen Bibliotheken zu vermeiden, die ebenfalls Importbibliotheken mit der Erweiterung lib generieren.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

native bool

Steuert, ob das Ziel für die Build- oder Host-Maschine kompiliert wird.

Standard = false

objekte list[extracted_obj | file | str]

Liste der Objektdateien, die in diesem Ziel verknüpft werden sollen.

Seit 1.1.0 kann dies generierte Dateien zusätzlich zu Objektdateien enthalten, für die Sie keine Quelle haben, oder die von anderen Build-Zielen erzeugte Objektdateien. In früheren Versionen mussten generierte Objektdateien in sources platziert werden.

override_options list[str] | dict[str | bool | int | list[str]]

Nimmt ein Array von Zeichenketten im selben Format wie die default_options von project, überschreibt die Werte dieser Optionen nur für dieses Ziel. (seit 1.2.0): Ein Dictionary kann jetzt übergeben werden.

(seit 0.40.0)

pie bool

Erstellt eine positionunabhängige ausführbare Datei.

(seit 0.49.0)

rust_crate_type str

Setzt den spezifischen Typ der zu kompilierenden Rust-Kiste (beim Kompilieren von Rust).

Wenn das Ziel eine executable() ist, ist der Standardwert "bin", der einzige erlaubte Wert.

Wenn es sich um eine static_library() handelt, ist der Standardwert "lib" und kann "lib", "staticlib" oder "rlib" sein. Wenn "lib", wählt Rustc einen Standardwert, "staticlib" bedeutet eine Bibliothek mit C-ABI, "rlib" bedeutet eine Bibliothek mit Rust-ABI.

Wenn es sich um eine shared_library() handelt, ist der Standardwert "lib" und kann "lib", "dylib", "cdylib" oder "proc-macro" sein. Wenn "lib", wählt Rustc einen Standardwert, "cdylib" bedeutet eine Bibliothek mit C-ABI, "dylib" bedeutet eine Bibliothek mit Rust-ABI, und "proc-macro" ist eine spezielle rust-prozedurale Makrokiste.

"proc-macro" ist neu in 0.62.0.

Seit 1.3.0 ist dies veraltet und ersetzt durch das Schlüsselwortargument "rust_abi". proc_macro-Kisten werden jetzt durch die Methode rust.proc_macro() behandelt.

(seit 0.42.0)

VERALTET

in 1.3.0

rust_dependency_map dict[str]

Bei Rust-Zielen bietet dies eine Zuordnung von Bibliotheksnamen zum Kistenamen, unter dem sie im Rust-Code verfügbar wären.

Dies ermöglicht Umbenennungen ähnlich der Abhängigkeitsumbenennungsfunktion von Cargo oder extern crate foo as bar im Rust-Code.

(seit 1.2.0)

sources str | file | custom_tgt | custom_idx | generated_list | structured_src

Zusätzliche Quellcodedateien. Ähnlich wie die Quellcode-Varargs.

vala_args list[str | file]

Compiler-Flags für Vala. Im Gegensatz zu anderen Sprachen können diese Dateien enthalten

vs_module_defs str | file | custom_tgt | custom_idx

Gibt eine Microsoft-Moduldefinitionsdatei zur Steuerung von Symbol-Exporten usw. auf Plattformen an, auf denen dies möglich ist (z. B. Windows).

Dies kann verwendet werden, um offenzulegen, welche Funktionen ein von einer ausführbaren Datei geladenes shared_module verwenden darf.

(seit 1.3.0)

win_subsystem str

Gibt den Subsystemtyp für die Windows-Plattform an. Typische Werte sind console für Textmodusprogramme und windows für GUI-Anwendungen. Der Wert kann auch eine Versionsangabe enthalten, z. B. windows,6.0. Die vollständige Liste finden Sie in der MSDN-Dokumentation.

(seit 0.56.0)

Standard = 'console'


files()

Dieser Befehl nimmt die ihm übergebenen Strings und gibt entsprechende Dateiobjekte zurück, die als Quellen für Build-Ziele verwendet werden können. Der Unterschied besteht darin, dass sich Dateiobjekte das Unterverzeichnis merken, in dem sie definiert wurden, und überall im Quellbaum verwendet werden können.

Signatur

# This command takes the strings given to it in arguments and returns
list[file] files(
  str file...,  # Path to the file
)

Beispiel

Angenommen, Sie haben die Quelldatei foo.cpp im Unterverzeichnis bar1 und möchten sie in einem Build-Ziel verwenden, das in bar2 definiert ist. Um dies zu erreichen, erstellen Sie zuerst das Objekt in bar1 wie folgt:

    foofile = files('foo.cpp')

Dann können Sie es in bar2 wie folgt verwenden:

    executable('myprog', 'myprog.cpp', foofile, ...)

Meson wird dann das Richtige tun.

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (file...) vom Typ str.

Pfad zur Datei.


find_program()

program_name ist hier ein String, der eine ausführbare Datei oder ein Skript sein kann, das in PATH oder an anderen Stellen innerhalb des Projekts gesucht wird. Die Suchreihenfolge ist:

  1. Programme, die über meson.override_find_program() überschrieben wurden
  2. [provide] Abschnitte in Subprojekt-Wrap-Dateien, wenn wrap_mode auf forcefallback gesetzt ist
  3. [binaries] Abschnitt in Ihren Maschinendateien
  4. Verzeichnisse, die über das Schlüsselwort dirs: bereitgestellt werden (siehe unten)
  5. Projektquellbaum relativ zum aktuellen Unterverzeichnis
    • Wenn der Rückgabewert von configure_file() verwendet wird, wird stattdessen das aktuelle Unterverzeichnis im Build-Verzeichnis verwendet.
  6. PATH Umgebungsvariable
  7. [provide] Abschnitte in Subprojekt-Wrap-Dateien, wenn wrap_mode auf etwas anderes als nofallback gesetzt ist

Meson erkennt auch automatisch Skripte mit einer Shebang-Zeile und führt sie mit der darin angegebenen ausführbaren Datei/Interpreter aus, sowohl unter Windows (da der Befehlsaufrufer den Befehl sonst ablehnt) als auch unter Unixen (wenn die Skriptdatei nicht die ausführbare Berechtigung hat). Daher dürfen Sie den Interpreter *nicht* manuell hinzufügen, wenn Sie dieses Skript als Teil einer Befehlsliste verwenden. Seit Version 0.50.0 gibt Meson seinen aktuellen Interpreter zurück, wenn das Programm "python3" angefordert und nicht im System gefunden wird.

Wenn Sie ein Programm an einem nicht-standardmäßigen Ort suchen müssen, können Sie einfach einen absoluten Pfad an find_program übergeben, z. B.:

setcap = find_program('setcap', '/usr/sbin/setcap', '/sbin/setcap', required : false)

Es ist auch möglich, ein Array an find_program zu übergeben, falls Sie die zu durchsuchenden Pfade dynamisch erstellen müssen:

setcap = find_program(['setcap', '/usr/sbin/setcap', '/sbin/setcap'], required : false)

Seit 1.2.0 wird find_program('meson') automatisch auf den Meson-Befehl überschrieben, der zum Ausführen des Build-Skripts verwendet wird.

Das zurückgegebene external_program-Objekt hat ebenfalls dokumentierte Methoden.

Signatur

# `program_name` here is a string that can be an executable or script
external_program find_program(
  str | file program_name,     # The name of the program to search, or a file object to be used
  str | file fallback...,      # These parameters are used as fallback names to search for

  # Keyword arguments:
  default_options  : list[str] | dict[str | bool | int | list[str]]  # An array of default option values
  dirs             : list[str]                                     # extra list of absolute paths where to look for program names
  disabler         : bool                                          # If `true` and the program couldn't be found, return a disabler object
  native           : bool                                          # Defines how this executable should be searched
  required         : bool | feature                                # When `true`, Meson will abort if no program can be found
  version          : str | list[str]                               # Specifies the required version, see
  version_argument : str                                           # Specifies the argument to pass when trying to find the version of the program
)

Argumente

Die Funktion find_program() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
program_name str | file

Der Name des zu suchenden Programms oder ein file-Objekt, das ohne Suche verwendet werden kann.

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (fallback...) vom Typ str | file.

Diese Parameter werden als Fallback-Namen für die Suche verwendet. Dies ist für Fälle gedacht, in denen das Programm viele alternative Namen haben kann, wie z. B. foo und foo.py. Die Funktion prüft die Argumente nacheinander und das erste gefundene wird zurückgegeben.

(seit 0.37.0)

Schließlich akzeptiert find_program() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
default_options list[str] | dict[str | bool | int | list[str]]

Ein Array von Standard-Optionswerten, die die in meson.options des Subprojekts festgelegten Werte überschreiben (ähnlich wie default_options in project(); sie haben nur dann Auswirkungen, wenn Meson zum ersten Mal ausgeführt wird, und Befehlszeilenargumente überschreiben alle Standardoptionen in Build-Dateien)

(seit 1.3.0)

dirs list[str]

zusätzliche Liste von absoluten Pfaden, in denen nach Programmnamen gesucht werden soll.

(seit 0.53.0)

disabler bool

Wenn true und das Programm nicht gefunden werden konnte, wird ein disabler-Objekt anstelle eines nicht gefundenen Objekts zurückgegeben.

(seit 0.49.0)

Standard = false

native bool

Definiert, wie diese ausführbare Datei gesucht werden soll. Standardmäßig ist sie auf false gesetzt, was dazu führt, dass Meson zuerst im Cross-File (beim Cross-Building) und, falls dort nicht definiert, dann im System nach der ausführbaren Datei sucht. Wenn auf true gesetzt, wird die Cross-Datei ignoriert und das Programm wird nur im System gesucht.

(seit 0.43.0)

Standard = false

erforderlich bool | feature

Wenn true, bricht Meson ab, wenn kein Programm gefunden werden kann. Wenn required auf false gesetzt ist, fährt Meson fort, auch wenn keines der Programme gefunden wird. Sie können dann die Methode .found() auf dem zurückgegebenen external_program verwenden, um zu überprüfen, ob es gefunden wurde oder nicht. (seit 0.47.0) Der Wert einer feature-Option kann auch an das Schlüsselwortargument required übergeben werden.

Standard = true

Version str | list[str]

Gibt die erforderliche Version an, siehe dependency() für das Argumentformat. Standardmäßig wird die Version des Programms durch Ausführen des Befehls program_name --version ermittelt. Wenn stdout leer ist, wird auf stderr zurückgegriffen. Wenn die Ausgabe mehr Text als nur eine Versionsnummer enthält, wird nur die erste gefundene Zahl, die durch Punkte getrennt ist, beibehalten. Wenn die Ausgabe komplizierter ist, muss die Versionsprüfung manuell mit run_command() durchgeführt werden.

(seit 0.52.0)

version_argument str

Gibt das Argument an, das beim Versuch, die Version des Programms zu ermitteln, übergeben werden soll. Wenn dies nicht angegeben ist, wird program_name --version verwendet.

(seit 1.5.0)


generator()

Siehe auch: custom_target()

Diese Funktion erstellt ein generator-Objekt, das zum Ausführen benutzerdefinierter Kompilierungsbefehle verwendet werden kann. Das einzige Positionsargument ist die auszuführende ausführbare Datei. Es kann entweder eine selbst erstellte ausführbare Datei oder eine von find_program zurückgegebene sein.

Die Vorlagen-Strings, die an alle Schlüsselwortargumente übergeben werden, akzeptieren die folgenden speziellen Ersetzungen:

  • @PLAINNAME@: der vollständige Name der Eingabedatei, z. B.: foo.c wird zu foo.c (unverändert)
  • @BASENAME@: die Basis des Eingabedateinamen, z. B.: foo.c.y wird zu foo.c (die Erweiterung wird entfernt)

Jeder String, der dem Schlüsselwortargument output übergeben wird, *muss* mit einer oder beiden dieser beiden Ersetzungen konstruiert werden.

Zusätzlich zu den oben genannten Ersetzungen akzeptiert das Schlüsselwortargument arguments auch Folgendes:

  • @OUTPUT@: der vollständige Pfad zur Ausgabedatei
  • @INPUT@: der vollständige Pfad zur Eingabedatei
  • @DEPFILE@: der vollständige Pfad zur Abhängigkeitsdatei
  • @SOURCE_DIR@: der vollständige Pfad zum Stammverzeichnis des Quellbaums
  • @CURRENT_SOURCE_DIR@: dies ist das Verzeichnis, in dem sich die aktuell verarbeitete meson.build-Datei befindet
  • @BUILD_DIR@: der vollständige Pfad zum Stammverzeichnis des Build-Baums, in dem die Ausgabe platziert wird

HINWEIS: Generatoren sollten nur für Ausgaben verwendet werden, die *nur* als Eingaben für ein build_target() oder ein custom_target() verwendet werden. Wenn Sie die verarbeitete Ausgabe eines Generators in mehreren Zielen verwenden, wird der Generator mehrmals ausgeführt, um Ausgaben für jedes Ziel zu erstellen. Jede Ausgabe wird in einem Ziel-privaten Verzeichnis @BUILD_DIR@ erstellt.

Wenn Sie Dateien für allgemeine Zwecke generieren möchten, z. B. zum Generieren von Header-Dateien, die von mehreren Quellen verwendet werden, oder von Daten, die installiert werden sollen, usw., verwenden Sie stattdessen ein custom_target().

Signatur

# See also: custom_target()
generator generator(
  exe | external_program exe,     # Executable for the command to run

  # Keyword arguments:
  arguments : list[str]                                  # A list of template strings that will be the command line arguments passed to the executable
  capture   : bool                                       # When this argument is set to true, Meson captures `stdout`
  depends   : list[build_tgt | custom_tgt | custom_idx]  # An array of build targets that must be built before
  depfile   : str                                        # A template string pointing to a dependency file that a
  output    : list[str]                                  # Template string (or list of template strings) defining
)

Argumente

Die Funktion generator() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
exe exe | external_program

Ausführbare Datei für den auszuführenden Befehl

Schließlich akzeptiert generator() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
arguments list[str]

Eine Liste von Vorlagen-Strings, die die Befehlszeilenargumente sind, die an die ausführbare Datei übergeben werden.

capture bool

Wenn dieses Argument auf true gesetzt ist, erfasst Meson stdout der executable und schreibt es in die Zieldatei, die als output angegeben ist.

(seit 0.43.0)

Standard = false

abhängig list[build_tgt | custom_tgt | custom_idx]

Ein Array von Build-Zielen, die erstellt werden müssen, bevor dieser Generator ausgeführt werden kann. Dies wird verwendet, wenn Sie einen Generator haben, der eine zweite ausführbare Datei aufruft, die in diesem Projekt erstellt wird (custom_idx war zwischen 0.60 und 1.4.0 nicht verfügbar).

(seit 0.51.0)

depfile str

Ein Vorlagen-String, der auf eine Abhängigkeitsdatei verweist, in der ein Generator alle zusätzlichen Dateien auflisten kann, von denen dieses Ziel abhängt. Zum Beispiel würde ein C-Compiler alle inkludierten Header-Dateien auflisten, und eine Änderung in einer dieser Dateien würde eine Neuberechnung auslösen.

output list[str]

Ein Vorlagen-String (oder eine Liste von Vorlagen-Strings), der definiert, wie ein Ausgabedateiname aus einem einzelnen Quellcodedateinamen generiert wird (oder mehrere Ausgabedateinamen werden generiert).


get_option()

Ruft den Wert der im Positionsargument angegebenen Projekt-Build-Option ab.

Beachten Sie, dass der für integrierte Optionen zurückgegebene Wert, die auf dir enden (wie bindir und libdir), normalerweise ein Pfad relativ zu (und innerhalb von) prefix ist, aber Sie sollten sich nicht darauf verlassen, da er in einigen Fällen auch ein absoluter Pfad sein kann . install_dir Argumente behandeln dies wie erwartet, aber wenn Sie einen absoluten Pfad benötigen, z. B. für eine Definition oder dergleichen, sollten Sie den Pfadverkettungsoperator wie folgt verwenden: get_option('prefix') / get_option('localstatedir'). Verketten Sie niemals Pfade manuell, als wären sie Strings.

Für Optionen vom Typ feature wird anstelle eines Strings ein feature-Options-Objekt zurückgegeben. Weitere Informationen finden Sie in der Dokumentation zu feature-Optionen.

Signatur

# Obtains the value of the [project build option](Build-options
str | int | bool | feature | list[str | int | bool] get_option(
  str option_name,     # Name of the option to query
)

Argumente

Die Funktion get_option() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
option_name str

Name der abzufragenden Option


get_variable()

Diese Funktion kann verwendet werden, um eine Variable dynamisch zu erhalten. res = get_variable(varname, fallback) nimmt den Wert von varname (der ein String sein muss) und speichert die Variable dieses Namens in res. Wenn die Variable nicht existiert, wird stattdessen die Variable fallback in res gespeichert. Wenn kein Fallback angegeben ist, führt der Versuch, eine nicht vorhandene Variable zu lesen, zu einem schwerwiegenden Fehler.

Signatur

# This function can be used to dynamically obtain a variable
any get_variable(
  str variable_name,     # Name of the variable to get
  any [default],         # Fallback value to return when the variable does not exist
)

Argumente

Die Argumentabflachung wird von dieser Funktion NICHT UNTERSTÜTZT.

Die Funktion get_variable() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
variable_name str

Name der abzurufenden Variable

default any

Fallback-Wert, der zurückgegeben wird, wenn die Variable nicht existiert

[optional]


import()

Importiert das gegebene Erweiterungsmodul. Gibt ein Objekt zurück, das verwendet werden kann, um die Methoden des Moduls aufzurufen. Hier ist ein Beispiel für ein hypothetisches testmod-Modul.

Signatur

# Imports the given extension module
module import(
  str module_name,     # Name of the module to import

  # Keyword arguments:
  disabler : bool            # Returns a disabler object when not found.
  required : bool | feature  # When set to `false`, Meson will proceed with the build even if the module is not found
)

Beispiel

tmod = import('testmod')
tmod.do_something()

Argumente

Die Funktion import() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
module_name str

Name des zu importierenden Moduls.

Schließlich akzeptiert import() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
disabler bool

Gibt ein disabler-Objekt zurück, wenn es nicht gefunden wird.

(seit 0.59.0)

erforderlich bool | feature

Wenn auf false gesetzt, fährt Meson mit dem Build fort, auch wenn das Modul nicht gefunden wird. Wenn auf eine feature-Option gesetzt, steuert die Funktion, ob es gesucht wird und ob ein Fehler auftritt, wenn es nicht gefunden wird.

(seit 0.59.0)

Standard = true


include_directories()

Gibt ein undurchsichtiges Objekt zurück, das die Verzeichnisse (relativ zum aktuellen Verzeichnis) enthält, die in den Positionsargumenten angegeben wurden. Das Ergebnis kann dann dem Schlüsselwortargument include_directories: beim Erstellen von ausführbaren Dateien oder Bibliotheken übergeben werden. Sie können das zurückgegebene Objekt in jedem Unterverzeichnis verwenden, Meson wird die Pfade automatisch korrekt handhaben.

Beachten Sie, dass dieser Funktionsaufruf die Verzeichnisse nicht selbst zum Suchpfad hinzufügt, da es keinen globalen Suchpfad gibt. Für so etwas siehe add_project_arguments().

Siehe auch den Parameter implicit_include_directories von executable(), der die aktuellen Quell- und Build-Verzeichnisse zum Include-Pfad hinzufügt.

Jedes angegebene Verzeichnis wird in zwei Include-Pfade konvertiert: einen relativ zum Quellverzeichnis und einen relativ zum Build-Verzeichnis.

Signatur

# Returns an opaque object which contains the directories (relative to
inc include_directories(
  str includes...,  # Include paths to add

  # Keyword arguments:
  is_system : bool  # If set to `true`, flags the specified directories as system directories
)

Beispiel

Zum Beispiel mit der folgenden Quellbaumstruktur in /home/user/project.git:

meson.build:

project(...)

subdir('include')
subdir('src')

...

include/meson.build:

inc = include_directories('.')

...

src/meson.build:

sources = [...]

executable('some-tool', sources,
  include_directories : inc,
  ...)

...

Wenn der Build-Baum /tmp/build-tree ist, werden die folgenden Include-Pfade zum Aufruf von executable() hinzugefügt: -I/tmp/build-tree/include -I/home/user/project.git/include.

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (includes...) vom Typ str.

Include-Pfade zum Hinzufügen.

Die Funktion include_directories() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
is_system bool

Wenn auf true gesetzt, werden die angegebenen Verzeichnisse als Systemverzeichnisse markiert. Das bedeutet, dass sie mit dem Compiler-Argument -isystem und nicht mit -I verwendet werden, auf Compilern, die dieses Flag unterstützen (in der Praxis alles außer Visual Studio).

Standard = false


install_data()

Installiert Dateien aus dem Quellbaum, die als Positionsargumente aufgeführt sind.

Siehe Installation für weitere Beispiele.

Signatur

# Installs files from the source tree that are listed as positional arguments
void install_data(
  file | str file...,  # Files to install

  # Keyword arguments:
  follow_symlinks : bool              # If true, dereferences links and copies their target instead
  install_dir     : str               # The absolute or relative path to the installation directory
  install_mode    : list[str | int]   # specify the file mode in symbolic format and
  install_tag     : str               # A string used by the `meson install --tags` command
  preserve_path   : bool              # Disable stripping child-directories from data files when installing
  rename          : list[str]         # If specified renames each source file into corresponding file from `rename` list
  sources         : list[file | str]  # Additional files to install
)
Warnung

Der Parameter install_mode ignorierte Ganzzahlwerte zwischen 0.59.0 und 1.1.0.

Warnung

Ein ausgelassener Parameter install_dir funktionierte in einem Subprojekt bis 1.3.0 nicht korrekt.

Warnung

Ein ausgelassener Parameter install_dir funktionierte in Kombination mit dem Parameter preserve_path bis 1.3.0 nicht korrekt.

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (file...) vom Typ file | str.

Zu installierende Dateien.

Die Funktion install_data() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
install_dir str

Der absolute oder relative Pfad zum Installationsverzeichnis. Wenn dies ein relativer Pfad ist, wird angenommen, dass er relativ zum Präfix ist.

Wenn ausgelassen, wird das Verzeichnis standardmäßig auf {datadir}/{projectname} gesetzt (seit 0.45.0).

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und die Gruppe/GID für die installierten Dateien an. Zum Beispiel:

install_mode: 'rw-r--r--' nur für den Dateimodus

install_mode: ['rw-r--r--', 'nobody', 'nogroup'] für den Dateimodus und den Benutzer/die Gruppe

install_mode: ['rw-r-----', 0, 0] für den Dateimodus und UID/GID

Um eine dieser drei Optionen auf dem Standardwert zu belassen, geben Sie false an.

(seit 0.38.0)

install_tag str

Ein String, der vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge der Dateien zu installieren. Standardmäßig haben diese Dateien keinen Installations-Tag, was bedeutet, dass sie nicht installiert werden, wenn das Argument --tags angegeben wird.

(seit 0.60.0)

preserve_path bool

Deaktiviert das Entfernen von Unterverzeichnissen aus Datendateien während der Installation.

Dies ist äquivalent zur nobase-Option von GNU Automake.

(seit 0.64.0)

Standard = false

rename list[str]

Wenn angegeben, benennt jede Quelldatei in die entsprechende Datei aus der Liste rename um. Verschachtelte Pfade sind zulässig und werden mit install_dir verbunden. Die Länge der Liste rename muss gleich der Anzahl der Quellen sein.

(seit 0.46.0)

sources list[file | str]

Zusätzliche zu installierende Dateien.


install_emptydir()

Installiert einen neuen Verzeichniseintrag an dem durch das Positionsargument angegebenen Ort. Wenn das Verzeichnis existiert und nicht leer ist, bleiben die Inhalte erhalten.

Signatur

(seit 0.60.0)

# Installs a new directory entry to the location specified by the positional
void install_emptydir(
  str dirpath...,  # Directory to create during installation

  # Keyword arguments:
  install_mode : list[str | int]  # Specify the file mode in symbolic format and optionally the owner/uid and
  install_tag  : str              # A string used by the `meson install --tags` command to install only a
)
Warnung

Der Parameter install_mode ignorierte Ganzzahlwerte vor 1.1.0.

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (dirpath...) vom Typ str.

Während der Installation zu erstellendes Verzeichnis.

Die Funktion install_emptydir() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und die Gruppe/GID für das erstellte Verzeichnis an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

install_tag str

Ein String, der vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge der Dateien zu installieren. Standardmäßig hat dieses Verzeichnis keinen Installations-Tag, was bedeutet, dass es nicht installiert wird, wenn das Argument --tags angegeben wird.


install_headers()

Installiert die angegebenen Header-Dateien aus dem Quellbaum in das System-Header-Verzeichnis (normalerweise /{prefix}/include) während des Installationsschritts. Dieses Verzeichnis kann durch Angabe mit dem Schlüsselwortargument install_dir überschrieben werden. Wenn Sie nur in ein Unterverzeichnis des System-Header-Verzeichnisses installieren möchten, verwenden Sie das Argument subdir. Als Beispiel, wenn dies den Wert myproj hat, werden die Header nach /{prefix}/include/myproj installiert.

Signatur

# Installs the specified header files from the source tree into the
void install_headers(
  file | str file...,  # Header files to install

  # Keyword arguments:
  follow_symlinks : bool             # If true, dereferences links and copies their target instead
  install_dir     : str              # Where to install to
  install_mode    : list[str | int]  # Specify the file mode in symbolic format
  preserve_path   : bool             # Disable stripping child-directories from header files when installing
  subdir          : str              # Install to the `subdir` subdirectory of the default includedir
)

Beispiel

Zum Beispiel installiert dies common.h und kola.h in /{prefix}/include

install_headers('common.h', 'proj/kola.h')

Dies installiert common.h und kola.h in /{prefix}/include/myproj

install_headers('common.h', 'proj/kola.h', subdir : 'myproj')

Dies installiert common.h und kola.h in /{prefix}/cust/myproj

install_headers('common.h', 'proj/kola.h', install_dir : 'cust', subdir : 'myproj')

Dies installiert common.h in /{prefix}/include und kola.h in /{prefix}/include/proj/

install_headers('common.h, 'proj/kola.h', preserve_path : true)
Warnung

Der Parameter install_mode ignorierte Ganzzahlwerte zwischen 0.59.0 und 1.1.0.

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (file...) vom Typ file | str.

Zu installierende Header-Dateien.

Die Funktion install_headers() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
install_dir str

Wohin installiert werden soll.

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und Gruppe/GID für die installierten Dateien an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

(seit 0.47.0)

preserve_path bool

Deaktiviert das Entfernen von Unterverzeichnissen aus Header-Dateien während der Installation.

Dies ist äquivalent zur nobase-Option von GNU Automake.

(seit 0.63.0)

Standard = false

subdir str

Installation im Unterverzeichnis subdir des Standard-Includedirs.

Inkompatibel mit dem Schlüsselwortargument install_dir.


install_man()

Installiert die angegebenen Man-Dateien aus dem Quellbaum in das Man-Verzeichnis des Systems während des Installationsschritts. Dieses Verzeichnis kann durch Angabe mit dem Schlüsselwortargument install_dir überschrieben werden.

(seit 0.49.0) Manpages werden nicht mehr implizit komprimiert.

Signatur

# Installs the specified man files from the source tree into system's man directory
void install_man(
  file | str file...,  # Man pages to install

  # Keyword arguments:
  install_dir  : str              # Where to install to
  install_mode : list[str | int]  # Specify the file mode in symbolic format
  locale       : str              # Can be used to specify the locale
)
Warnung

Der Parameter install_mode ignorierte Ganzzahlwerte zwischen 0.59.0 und 1.1.0.

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (file...) vom Typ file | str.

Zu installierende Manpages.

Die Funktion install_man() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
install_dir str

Wohin installiert werden soll.

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und Gruppe/GID für die installierten Dateien an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

(seit 0.47.0)

locale str

Kann verwendet werden, um die Locale anzugeben, in die die Manpage innerhalb des Verzeichnisbaums für Handbuchseiten installiert wird. Ein Beispiel für ein Handbuch könnte foo.fr.1 mit der Locale fr sein, sodass {mandir}/{locale}/man{num}/foo.1 die installierte Datei wird.

(seit 0.58.0)


install_subdir()

Installiert das gesamte angegebene Unterverzeichnis und dessen Inhalt aus dem Quellbaum an den durch das Schlüsselwortargument install_dir angegebenen Ort.

(seit 0.45.0, seit 0.60.0 veraltet) Wenn das Unterverzeichnis im Quellbaum nicht existiert, wird ein leeres Verzeichnis an dem angegebenen Ort erstellt. Ein neu erstelltes Unterverzeichnis kann nur im Schlüsselwortargument install_dir erstellt werden. Diese Methode hat eine Reihe von Fehlern und war nie dazu bestimmt, so zu funktionieren. Bitte verwenden Sie stattdessen install_emptydir().

Signatur

# Installs the entire given subdirectory and its contents from the
void install_subdir(
  str subdir_name,     # The sub-directory to install

  # Keyword arguments:
  exclude_directories : list[str]        # A list of directory names that should not be installed
  exclude_files       : list[str]        # A list of file names that should not be installed
  follow_symlinks     : bool             # If true, dereferences links and copies their target instead
  install_dir         : str              # Where to install to
  install_mode        : list[str | int]  # Specify the file mode in symbolic format
  install_tag         : str              # A string used by the `meson install --tags` command
  strip_directory     : bool             # Install directory contents
)

Beispiel

Für ein gegebenes Verzeichnis foo

foo/
  bar/
    file1
  file2

install_subdir('foo', install_dir : 'share', strip_directory : false) erstellt

share/
  foo/
    bar/
      file1
    file2

install_subdir('foo', install_dir : 'share', strip_directory : true) erstellt

share/
  bar/
    file1
  file2

install_subdir('foo/bar', install_dir : 'share', strip_directory : false) erstellt

share/
  bar/
    file1

install_subdir('foo/bar', install_dir : 'share', strip_directory : true) erstellt

share/
  file1

install_subdir('new_directory', install_dir : 'share') erstellt

share/
  new_directory/
Warnung

Der Parameter install_mode ignorierte Ganzzahlwerte zwischen 0.59.0 und 1.1.0.

Argumente

Die Funktion install_subdir() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
subdir_name str

Das zu installierende Unterverzeichnis

Schließlich akzeptiert install_subdir() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
exclude_directories list[str]

Eine Liste von Verzeichnisnamen, die nicht installiert werden sollen. Namen werden als Pfade relativ zum Speicherort von subdir_name interpretiert.

(seit 0.47.0)

exclude_files list[str]

Eine Liste von Dateinamen, die nicht installiert werden sollen. Namen werden als Pfade relativ zum Speicherort von subdir_name interpretiert.

install_dir str

Wohin installiert werden soll.

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und Gruppe/GID für die installierten Dateien an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

(seit 0.47.0)

install_tag str

Ein String, der vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge der Dateien zu installieren. Standardmäßig haben diese Dateien keinen Installations-Tag, was bedeutet, dass sie nicht installiert werden, wenn das Argument --tags angegeben wird.

(seit 0.60.0)

strip_directory bool

Installiert den Verzeichnisinhalt. Wenn strip_directory=true ist, wird nur die letzte Komponente des Quellpfads verwendet.

(seit 0.45.0)

Standard = false


Installiert einen symbolischen Link zu pointing_to Ziel unter install_dir.

Signatur

(seit 0.61.0)

# Installs a symbolic link to `pointing_to` target under install_dir
void install_symlink(
  str link_name,     # Name of the created link under `install_dir`

  # Keyword arguments:
  install_dir : str  [required]  # The absolute or relative path to the installation directory for the links
  install_tag : str              # A string used by the `meson install --tags` command
  pointing_to : str  [required]  # Target to point the link to
)

Argumente

Die Funktion install_symlink() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter

Schließlich akzeptiert install_symlink() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter


is_disabler()

Gibt true zurück, wenn eine Variable ein Disabler ist, und false andernfalls.

Signatur

(seit 0.52.0)

# Returns true if a variable is a disabler and false otherwise
bool is_disabler(
  any var,     # The variable to test
)

Argumente

Die Funktion is_disabler() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
var any

Die zu testende Variable


is_variable()

Gibt true zurück, wenn eine Variable des angegebenen Namens existiert, und false andernfalls.

Signatur

(seit 0.52.0)

# Returns true if a variable of the given name exists and false otherwise
bool is_variable(
  str var,     # The variable to test
)

Argumente

Die Funktion is_variable() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
var str

Die zu testende Variable


jar()

Baut ein Jar aus den angegebenen Java-Quelldateien. Schlüsselwortargumente sind die gleichen wie bei executable(), mit der zusätzlichen Option main_class, die die Hauptklasse angibt, die beim Ausführen des Jars mit java -jar file.jar ausgeführt werden soll.

Signatur

# Build a jar from the specified Java source files
jar jar(
  str                                                   target_name,     # The *unique* name of the build target
  str | file | custom_tgt | custom_idx | generated_list source...,       # Input source to compile

  # Keyword arguments:
  <lang>_args                  : list[str]                                                               # compiler flags to use for the given language;
  <lang>_pch                   : str                                                                     # precompiled header file to use for the given language
  build_by_default             : bool                                                                    # Causes, when set to `true`, to have this target be built by default
  build_rpath                  : str                                                                     # A string to add to target's rpath definition in the build dir,
  d_debug                      : list[str]                                                               # The [D version identifiers](https://dlang
  d_import_dirs                : list[inc | str]                                                         # the directories to add to the string search path (i
  d_module_versions            : list[str | int]                                                         # List of module version identifiers set when compiling D sources
  d_unittest                   : bool                                                                    # When set to true, the D modules are compiled in debug mode
  dependencies                 : list[dep]                                                               # one or more dependency objects
  extra_files                  : str | file | custom_tgt | custom_idx                                    # Not used for the build itself but are shown as source files in IDEs
  gnu_symbol_visibility        : str                                                                     # Specifies how symbols should be exported, see
  gui_app                      : bool                                                                    # When set to true flags this target as a GUI application
  implicit_include_directories : bool                                                                    # Controls whether Meson adds the current source and build directories to the include path
  include_directories          : list[inc | str]                                                         # one or more objects created with the include_directories() function,
  install                      : bool                                                                    # When set to true, this executable should be installed
  install_dir                  : str                                                                     # override install directory for this file
  install_mode                 : list[str | int]                                                         # Specify the file mode in symbolic format
  install_rpath                : str                                                                     # A string to set the target's rpath to after install
  install_tag                  : str                                                                     # A string used by the `meson install --tags` command
  java_resources               : structured_src                                                          # Resources to be added to the jar
  link_args                    : list[str]                                                               # Flags to use during linking
  link_depends                 : str | file | custom_tgt | custom_idx                                    # Strings, files, or custom targets the link step depends on
  link_language                : str                                                                     # Makes the linker for this target be for the specified language
  link_whole                   : list[lib | custom_tgt | custom_idx]                                     # Links all contents of the given static libraries whether they are used or
  link_with                    : list[lib | custom_tgt | custom_idx]                                     # One or more shared or static libraries
  main_class                   : str                                                                     # Main class for running the built jar
  name_prefix                  : str | list[void]                                                        # The string that will be used as the prefix for the
  name_suffix                  : str | list[void]                                                        # The string that will be used as the extension for the
  native                       : bool                                                                    # Controls whether the target is compiled for the build or host machines
  objects                      : list[extracted_obj | file | str]                                        # List of object files that should be linked in this target
  override_options             : list[str] | dict[str | bool | int | list[str]]                            # takes an array of strings in the same format as `project`'s `default_options`
  rust_crate_type              : str                                                                     # Set the specific type of rust crate to compile (when compiling rust)
  rust_dependency_map          : dict[str]                                                               # On rust targets this provides a map of library names to the crate name
  sources                      : str | file | custom_tgt | custom_idx | generated_list | structured_src  # Additional source files
  vala_args                    : list[str | file]                                                        # Compiler flags for Vala
  win_subsystem                : str                                                                     # Specifies the subsystem type to use
)

Argumente

Die Funktion jar() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
zielname str

Der *eindeutige* Name des Build-Ziels

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (quelle...) vom Typ str | file | custom_tgt | custom_idx | generated_list.

Eingabequelle zum Kompilieren. Die folgenden Typen werden unterstützt

  • Zeichenketten relativ zum aktuellen Quellverzeichnis
  • file-Objekte, die in früheren Build-Dateien definiert wurden
  • Der Rückgabewert von Konfigurationszeit-Generatoren wie configure_file()
  • Der Rückgabewert von Build-Zeit-Generatoren wie custom_target() oder generator.process()

Diese Eingabedateien können Quellen, Objekte, Bibliotheken oder beliebige andere Dateien sein. Meson kategorisiert sie automatisch anhand der Erweiterung und verwendet sie entsprechend. Zum Beispiel werden Quellen (.c, .cpp, .vala, .rs usw.) kompiliert und Objekte (.o, .obj) und Bibliotheken (.so, .dll usw.) verknüpft.

Mit dem Ninja-Backend erstellt Meson eine Build-Zeit-Abhängigkeit (order-only dependency) für alle generierten Eingabedateien, einschließlich unbekannter Dateien. Dies ist notwendig, um die Generierung der tatsächlichen Abhängigkeiten in der von Ihrem Compiler generierten Depfile zu bootstrappen, um zu bestimmen, wann Quellen neu kompiliert werden müssen. Ninja stützt sich für alle Eingabedateien, generierten und nicht generierten, auf diese Abhängigkeitsdatei. Das Verhalten ist für andere Backends ähnlich.

Schließlich akzeptiert jar() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
<lang>_args list[str]

Compiler-Flags für die angegebene Sprache; z. B. cpp_args für C++

<lang>_pch str

Vorkompilierte Header-Datei für die angegebene Sprache

build_by_default bool

Wenn auf true gesetzt, wird dieses Ziel standardmäßig erstellt. Das bedeutet, es wird erstellt, wenn meson compile ohne Argumente aufgerufen wird. Der Standardwert ist true für alle Build-Zieltypen.

(seit 0.38.0)

Standard = true

build_rpath str

Eine Zeichenkette, die der RPATH-Definition des Ziels im Build-Verzeichnis hinzugefügt wird, aber bei der Installation entfernt wird

(seit 0.42.0)

d_debug list[str]

Die D-Versions-Identifikatoren, die während der Kompilierung von D-Quelldateien hinzugefügt werden sollen.

d_import_dirs list[inc | str]

Die Verzeichnisse, die zum String-Suchpfad hinzugefügt werden sollen (d. h. der -J-Schalter für DMD). Müssen inc-Objekte oder einfache Zeichenketten sein.

(seit 0.62.0)

d_module_versions list[str | int]

Liste der Modulversions-Identifikatoren, die beim Kompilieren von D-Quellen gesetzt werden.

d_unittest bool

Wenn true gesetzt, werden die D-Module im Debug-Modus kompiliert.

Standard = false

dependencies list[dep]

Ein oder mehrere Abhängigkeitsobjekte, die mit dependency() oder compiler.find_library() (für externe Abhängigkeiten) oder declare_dependency() (für vom Projekt erstellte Abhängigkeiten) erstellt wurden.

extra_files str | file | custom_tgt | custom_idx

Nicht für den Build selbst verwendet, aber in IDEs, die Dateien nach Zielen gruppieren (wie z. B. Visual Studio), als Quelldateien angezeigt.

gnu_symbol_visibility str

Gibt an, wie Symbole exportiert werden sollen, siehe z. B. das GCC-Wiki für weitere Informationen. Dieser Wert kann entweder eine leere Zeichenkette oder einer der Werte default, internal, hidden, protected oder inlineshidden sein, was dasselbe wie hidden ist, aber auch Dinge wie C++ implizite Konstruktoren wie im GCC-Handbuch beschrieben enthält. Ignoriert bei Compilern, die GNU Visibility-Argumente nicht unterstützen.

(seit 0.48.0)

gui_app bool

Wenn true gesetzt, kennzeichnet dieses Ziel als GUI-Anwendung auf Plattformen, wo dies einen Unterschied macht, veraltet seit 0.56.0, verwenden Sie stattdessen win_subsystem.

VERALTET

in 0.56.0

Standard = false

implicit_include_directories bool

Steuert, ob Meson die aktuellen Quell- und Build-Verzeichnisse zum Include-Pfad hinzufügt

(seit 0.42.0)

Standard = true

include_directories list[inc | str]

Ein oder mehrere Objekte, die mit der Funktion include_directories() erstellt wurden, oder (seit 0.50.0) Zeichenketten, die transparent in Include-Verzeichnisobjekte erweitert werden.

installieren bool

Wenn true gesetzt, soll diese ausführbare Datei installiert werden.

Standard = false

install_dir str

Überschreibt das Installationsverzeichnis für diese Datei. Wenn der Wert ein relativer Pfad ist, wird er relativ zur Option prefix betrachtet. Wenn Sie beispielsweise Plugins in einem Unterverzeichnis installieren möchten, würden Sie so etwas verwenden: install_dir : get_option('libdir') / 'projectname-1.0'.

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und Gruppe/GID für die installierten Dateien an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

(seit 0.47.0)

install_rpath str

Eine Zeichenkette, die den RPATH des Ziels nach der Installation setzt (aber *nicht* davor). Unter Windows hat dieses Argument keine Wirkung.

install_tag str

Eine Zeichenkette, die vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge von Dateien zu installieren. Standardmäßig haben alle Build-Ziele den Tag runtime, mit Ausnahme von statischen Bibliotheken, die den Tag devel haben.

(seit 0.60.0)

java_resources structured_src

Ressourcen, die zum Jar hinzugefügt werden sollen

(seit 0.62.0)

main_class str

Hauptklasse zum Ausführen des kompilierten Jars

name_prefix str | list[void]

Die Zeichenkette, die als Präfix für den Ausgabedateinamen des Ziels verwendet wird, indem der Standard überschrieben wird (nur für Bibliotheken verwendet). Standardmäßig ist dies lib auf allen Plattformen und Compilern, außer bei MSVC-Shared-Bibliotheken, wo es zur Konvention weggelassen wird, und Cygwin-Shared-Bibliotheken, wo es cyg ist.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

name_suffix str | list[void]

Die Zeichenkette, die als Erweiterung für das Ziel verwendet wird, indem der Standard überschrieben wird. Standardmäßig ist unter Windows exe für ausführbare Dateien und auf anderen Plattformen wird es weggelassen.

Für dynamische Bibliotheken ist der Standardwert dylib unter macOS, dll unter Windows und so überall sonst. Für statische Bibliotheken ist es überall a. Konventionsgemäß verwenden MSVC-statische Bibliotheken die lib-Erweiterung, aber wir verwenden a, um eine mögliche Namenskollision mit dynamischen Bibliotheken zu vermeiden, die ebenfalls Importbibliotheken mit der Erweiterung lib generieren.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

native bool

Steuert, ob das Ziel für die Build- oder Host-Maschine kompiliert wird.

Standard = false

objekte list[extracted_obj | file | str]

Liste der Objektdateien, die in diesem Ziel verknüpft werden sollen.

Seit 1.1.0 kann dies generierte Dateien zusätzlich zu Objektdateien enthalten, für die Sie keine Quelle haben, oder die von anderen Build-Zielen erzeugte Objektdateien. In früheren Versionen mussten generierte Objektdateien in sources platziert werden.

override_options list[str] | dict[str | bool | int | list[str]]

Nimmt ein Array von Zeichenketten im selben Format wie die default_options von project, überschreibt die Werte dieser Optionen nur für dieses Ziel. (seit 1.2.0): Ein Dictionary kann jetzt übergeben werden.

(seit 0.40.0)

rust_crate_type str

Setzt den spezifischen Typ der zu kompilierenden Rust-Kiste (beim Kompilieren von Rust).

Wenn das Ziel eine executable() ist, ist der Standardwert "bin", der einzige erlaubte Wert.

Wenn es sich um eine static_library() handelt, ist der Standardwert "lib" und kann "lib", "staticlib" oder "rlib" sein. Wenn "lib", wählt Rustc einen Standardwert, "staticlib" bedeutet eine Bibliothek mit C-ABI, "rlib" bedeutet eine Bibliothek mit Rust-ABI.

Wenn es sich um eine shared_library() handelt, ist der Standardwert "lib" und kann "lib", "dylib", "cdylib" oder "proc-macro" sein. Wenn "lib", wählt Rustc einen Standardwert, "cdylib" bedeutet eine Bibliothek mit C-ABI, "dylib" bedeutet eine Bibliothek mit Rust-ABI, und "proc-macro" ist eine spezielle rust-prozedurale Makrokiste.

"proc-macro" ist neu in 0.62.0.

Seit 1.3.0 ist dies veraltet und ersetzt durch das Schlüsselwortargument "rust_abi". proc_macro-Kisten werden jetzt durch die Methode rust.proc_macro() behandelt.

(seit 0.42.0)

VERALTET

in 1.3.0

rust_dependency_map dict[str]

Bei Rust-Zielen bietet dies eine Zuordnung von Bibliotheksnamen zum Kistenamen, unter dem sie im Rust-Code verfügbar wären.

Dies ermöglicht Umbenennungen ähnlich der Abhängigkeitsumbenennungsfunktion von Cargo oder extern crate foo as bar im Rust-Code.

(seit 1.2.0)

sources str | file | custom_tgt | custom_idx | generated_list | structured_src

Zusätzliche Quellcodedateien. Ähnlich wie die Quellcode-Varargs.

vala_args list[str | file]

Compiler-Flags für Vala. Im Gegensatz zu anderen Sprachen können diese Dateien enthalten

win_subsystem str

Gibt den Subsystemtyp für die Windows-Plattform an. Typische Werte sind console für Textmodusprogramme und windows für GUI-Anwendungen. Der Wert kann auch eine Versionsangabe enthalten, z. B. windows,6.0. Die vollständige Liste finden Sie in der MSDN-Dokumentation.

(seit 0.56.0)

Standard = 'console'


join_paths()

Verkettet die gegebenen Strings zu einem Pfadsegment des Dateisystems. Zum Beispiel ergibt join_paths('foo', 'bar') foo/bar. Wenn eines der einzelnen Segmente ein absoluter Pfad ist, werden alle vorherigen Segmente verworfen. Das bedeutet, dass join_paths('foo', '/bar') /bar zurückgibt.

(seit 0.49.0) Die Verwendung des /-Operators für Strings ist äquivalent zum Aufruf von join_paths().

# res1 and res2 will have identical values
res1 = join_paths(foo, bar)
res2 = foo / bar

Signatur

(seit 0.36.0)

# Joins the given strings into a file system path segment
str join_paths(
  str part...,  # The path parts to join
)
Warnung

Verwenden Sie join_paths() nicht für Quellen in library() und executable(). Sie sollten stattdessen files() verwenden.

Argumente

Die Funktion akzeptiert zwischen 1 und unendlich variable Argumente (part...) vom Typ str.

Die zu verbindenden Pfadteile.


library()

Erstellt eine Bibliothek, die entweder statisch, dynamisch oder beides ist, abhängig vom Wert der Benutzeroption default_library . Sie sollten dies meistens anstelle von shared_library(), static_library() oder both_libraries() verwenden. Dies ermöglicht es Ihnen, Ihr gesamtes Projekt (einschließlich Subprojekte) mit nur einer Option von dynamisch auf statisch umzuschalten. Diese Option gilt für intern im gesamten Projekt erstellte Bibliotheken. Für externe Abhängigkeiten ist der standardmäßig bevorzugte Bibliothekstyp dynamisch. Dies kann pro Bibliothek über das Schlüsselwort static von dependency() angepasst werden.

Die Schlüsselwortargumente hierfür sind dieselben wie für build_target()

Signatur

# Builds a library that is either static, shared or both depending on
lib library(
  str                                                   target_name,     # The *unique* name of the build target
  str | file | custom_tgt | custom_idx | generated_list source...,       # Input source to compile

  # Keyword arguments:
  <lang>_args                  : list[str]                                                               # compiler flags to use for the given language;
  <lang>_pch                   : str                                                                     # precompiled header file to use for the given language
  <lang>_shared_args           : list[str]                                                               # Arguments that are only passed to a shared library
  <lang>_static_args           : list[str]                                                               # Arguments that are only passed to a static library
  build_by_default             : bool                                                                    # Causes, when set to `true`, to have this target be built by default
  build_rpath                  : str                                                                     # A string to add to target's rpath definition in the build dir,
  d_debug                      : list[str]                                                               # The [D version identifiers](https://dlang
  d_import_dirs                : list[inc | str]                                                         # the directories to add to the string search path (i
  d_module_versions            : list[str | int]                                                         # List of module version identifiers set when compiling D sources
  d_unittest                   : bool                                                                    # When set to true, the D modules are compiled in debug mode
  darwin_versions              : str | int | list[str]                                                   # Defines the `compatibility version` and `current version` for the dylib on macOS
  dependencies                 : list[dep]                                                               # one or more dependency objects
  extra_files                  : str | file | custom_tgt | custom_idx                                    # Not used for the build itself but are shown as source files in IDEs
  gnu_symbol_visibility        : str                                                                     # Specifies how symbols should be exported, see
  gui_app                      : bool                                                                    # When set to true flags this target as a GUI application
  implicit_include_directories : bool                                                                    # Controls whether Meson adds the current source and build directories to the include path
  include_directories          : list[inc | str]                                                         # one or more objects created with the include_directories() function,
  install                      : bool                                                                    # When set to true, this executable should be installed
  install_dir                  : str                                                                     # override install directory for this file
  install_mode                 : list[str | int]                                                         # Specify the file mode in symbolic format
  install_rpath                : str                                                                     # A string to set the target's rpath to after install
  install_tag                  : str                                                                     # A string used by the `meson install --tags` command
  link_args                    : list[str]                                                               # Flags to use during linking
  link_depends                 : str | file | custom_tgt | custom_idx                                    # Strings, files, or custom targets the link step depends on
  link_language                : str                                                                     # Makes the linker for this target be for the specified language
  link_whole                   : list[lib | custom_tgt | custom_idx]                                     # Links all contents of the given static libraries whether they are used or
  link_with                    : list[lib | custom_tgt | custom_idx]                                     # One or more shared or static libraries
  name_prefix                  : str | list[void]                                                        # The string that will be used as the prefix for the
  name_suffix                  : str | list[void]                                                        # The string that will be used as the extension for the
  native                       : bool                                                                    # Controls whether the target is compiled for the build or host machines
  objects                      : list[extracted_obj | file | str]                                        # List of object files that should be linked in this target
  override_options             : list[str] | dict[str | bool | int | list[str]]                            # takes an array of strings in the same format as `project`'s `default_options`
  pic                          : bool                                                                    # Builds the library as positional independent code
  prelink                      : bool                                                                    # If `true` the object files in the target will be prelinked,
  rust_abi                     : str                                                                     # Set the specific ABI to compile (when compiling rust)
  rust_crate_type              : str                                                                     # Set the specific type of rust crate to compile (when compiling rust)
  rust_dependency_map          : dict[str]                                                               # On rust targets this provides a map of library names to the crate name
  sources                      : str | file | custom_tgt | custom_idx | generated_list | structured_src  # Additional source files
  soversion                    : str | int                                                               # A string or integer specifying the soversion of this shared library,
  vala_args                    : list[str | file]                                                        # Compiler flags for Vala
  vala_shared_args             : list[str | file]                                                        # Arguments that are only passed to a shared library
  vala_static_args             : list[str | file]                                                        # Arguments that are only passed to a static library
  version                      : str                                                                     # A string specifying the version of this shared library,
  vs_module_defs               : str | file | custom_tgt | custom_idx                                    # Specify a Microsoft module definition file for controlling symbol exports,
  win_subsystem                : str                                                                     # Specifies the subsystem type to use
)
Warnung

using_shared_args und/oder_static_args können zu wesentlich längeren Kompilierungszeiten bei both_library führen, da Objektdateien nicht zwischen den statischen und dynamischen Zielen geteilt werden können. Es ist garantiert, dass die Erstellung nicht dupliziert wird, wenn diese Argumente leere Arrays sind.

Argumente

Die Funktion library() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
zielname str

Der *eindeutige* Name des Build-Ziels

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (quelle...) vom Typ str | file | custom_tgt | custom_idx | generated_list.

Eingabequelle zum Kompilieren. Die folgenden Typen werden unterstützt

  • Zeichenketten relativ zum aktuellen Quellverzeichnis
  • file-Objekte, die in früheren Build-Dateien definiert wurden
  • Der Rückgabewert von Konfigurationszeit-Generatoren wie configure_file()
  • Der Rückgabewert von Build-Zeit-Generatoren wie custom_target() oder generator.process()

Diese Eingabedateien können Quellen, Objekte, Bibliotheken oder beliebige andere Dateien sein. Meson kategorisiert sie automatisch anhand der Erweiterung und verwendet sie entsprechend. Zum Beispiel werden Quellen (.c, .cpp, .vala, .rs usw.) kompiliert und Objekte (.o, .obj) und Bibliotheken (.so, .dll usw.) verknüpft.

Mit dem Ninja-Backend erstellt Meson eine Build-Zeit-Abhängigkeit (order-only dependency) für alle generierten Eingabedateien, einschließlich unbekannter Dateien. Dies ist notwendig, um die Generierung der tatsächlichen Abhängigkeiten in der von Ihrem Compiler generierten Depfile zu bootstrappen, um zu bestimmen, wann Quellen neu kompiliert werden müssen. Ninja stützt sich für alle Eingabedateien, generierten und nicht generierten, auf diese Abhängigkeitsdatei. Das Verhalten ist für andere Backends ähnlich.

Schließlich akzeptiert library() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
<lang>_args list[str]

Compiler-Flags für die angegebene Sprache; z. B. cpp_args für C++

<lang>_pch str

Vorkompilierte Header-Datei für die angegebene Sprache

<lang>_shared_args list[str]

Argumente, die nur an eine dynamische Bibliothek übergeben werden

(seit 1.3.0)

<lang>_static_args list[str]

Argumente, die nur an eine statische Bibliothek übergeben werden

(seit 1.3.0)

build_by_default bool

Wenn auf true gesetzt, wird dieses Ziel standardmäßig erstellt. Das bedeutet, es wird erstellt, wenn meson compile ohne Argumente aufgerufen wird. Der Standardwert ist true für alle Build-Zieltypen.

(seit 0.38.0)

Standard = true

build_rpath str

Eine Zeichenkette, die der RPATH-Definition des Ziels im Build-Verzeichnis hinzugefügt wird, aber bei der Installation entfernt wird

(seit 0.42.0)

d_debug list[str]

Die D-Versions-Identifikatoren, die während der Kompilierung von D-Quelldateien hinzugefügt werden sollen.

d_import_dirs list[inc | str]

Die Verzeichnisse, die zum String-Suchpfad hinzugefügt werden sollen (d. h. der -J-Schalter für DMD). Müssen inc-Objekte oder einfache Zeichenketten sein.

(seit 0.62.0)

d_module_versions list[str | int]

Liste der Modulversions-Identifikatoren, die beim Kompilieren von D-Quellen gesetzt werden.

d_unittest bool

Wenn true gesetzt, werden die D-Module im Debug-Modus kompiliert.

Standard = false

darwin_versions str | int | list[str]

Definiert die compatibility version und current version für die dylib unter macOS. Wenn eine Liste angegeben wird, muss sie null, ein oder zwei Elemente enthalten. Wenn nur ein Element angegeben wird oder es sich nicht um eine Liste handelt, wird der angegebene Wert zum Setzen der Kompatibilitäts- und aktuellen Version verwendet. Wenn nicht angegeben, wird die soversion wie nach den oben genannten Regeln verwendet.

(seit 0.48.0)

dependencies list[dep]

Ein oder mehrere Abhängigkeitsobjekte, die mit dependency() oder compiler.find_library() (für externe Abhängigkeiten) oder declare_dependency() (für vom Projekt erstellte Abhängigkeiten) erstellt wurden.

extra_files str | file | custom_tgt | custom_idx

Nicht für den Build selbst verwendet, aber in IDEs, die Dateien nach Zielen gruppieren (wie z. B. Visual Studio), als Quelldateien angezeigt.

gnu_symbol_visibility str

Gibt an, wie Symbole exportiert werden sollen, siehe z. B. das GCC-Wiki für weitere Informationen. Dieser Wert kann entweder eine leere Zeichenkette oder einer der Werte default, internal, hidden, protected oder inlineshidden sein, was dasselbe wie hidden ist, aber auch Dinge wie C++ implizite Konstruktoren wie im GCC-Handbuch beschrieben enthält. Ignoriert bei Compilern, die GNU Visibility-Argumente nicht unterstützen.

(seit 0.48.0)

gui_app bool

Wenn true gesetzt, kennzeichnet dieses Ziel als GUI-Anwendung auf Plattformen, wo dies einen Unterschied macht, veraltet seit 0.56.0, verwenden Sie stattdessen win_subsystem.

VERALTET

in 0.56.0

Standard = false

implicit_include_directories bool

Steuert, ob Meson die aktuellen Quell- und Build-Verzeichnisse zum Include-Pfad hinzufügt

(seit 0.42.0)

Standard = true

include_directories list[inc | str]

Ein oder mehrere Objekte, die mit der Funktion include_directories() erstellt wurden, oder (seit 0.50.0) Zeichenketten, die transparent in Include-Verzeichnisobjekte erweitert werden.

installieren bool

Wenn true gesetzt, soll diese ausführbare Datei installiert werden.

Standard = false

install_dir str

Überschreibt das Installationsverzeichnis für diese Datei. Wenn der Wert ein relativer Pfad ist, wird er relativ zur Option prefix betrachtet. Wenn Sie beispielsweise Plugins in einem Unterverzeichnis installieren möchten, würden Sie so etwas verwenden: install_dir : get_option('libdir') / 'projectname-1.0'.

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und Gruppe/GID für die installierten Dateien an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

(seit 0.47.0)

install_rpath str

Eine Zeichenkette, die den RPATH des Ziels nach der Installation setzt (aber *nicht* davor). Unter Windows hat dieses Argument keine Wirkung.

install_tag str

Eine Zeichenkette, die vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge von Dateien zu installieren. Standardmäßig haben alle Build-Ziele den Tag runtime, mit Ausnahme von statischen Bibliotheken, die den Tag devel haben.

(seit 0.60.0)

name_prefix str | list[void]

Die Zeichenkette, die als Präfix für den Ausgabedateinamen des Ziels verwendet wird, indem der Standard überschrieben wird (nur für Bibliotheken verwendet). Standardmäßig ist dies lib auf allen Plattformen und Compilern, außer bei MSVC-Shared-Bibliotheken, wo es zur Konvention weggelassen wird, und Cygwin-Shared-Bibliotheken, wo es cyg ist.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

name_suffix str | list[void]

Die Zeichenkette, die als Erweiterung für das Ziel verwendet wird, indem der Standard überschrieben wird. Standardmäßig ist unter Windows exe für ausführbare Dateien und auf anderen Plattformen wird es weggelassen.

Für dynamische Bibliotheken ist der Standardwert dylib unter macOS, dll unter Windows und so überall sonst. Für statische Bibliotheken ist es überall a. Konventionsgemäß verwenden MSVC-statische Bibliotheken die lib-Erweiterung, aber wir verwenden a, um eine mögliche Namenskollision mit dynamischen Bibliotheken zu vermeiden, die ebenfalls Importbibliotheken mit der Erweiterung lib generieren.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

native bool

Steuert, ob das Ziel für die Build- oder Host-Maschine kompiliert wird.

Standard = false

objekte list[extracted_obj | file | str]

Liste der Objektdateien, die in diesem Ziel verknüpft werden sollen.

Seit 1.1.0 kann dies generierte Dateien zusätzlich zu Objektdateien enthalten, für die Sie keine Quelle haben, oder die von anderen Build-Zielen erzeugte Objektdateien. In früheren Versionen mussten generierte Objektdateien in sources platziert werden.

override_options list[str] | dict[str | bool | int | list[str]]

Nimmt ein Array von Zeichenketten im selben Format wie die default_options von project, überschreibt die Werte dieser Optionen nur für dieses Ziel. (seit 1.2.0): Ein Dictionary kann jetzt übergeben werden.

(seit 0.40.0)

pic bool

Erstellt die Bibliothek als positionsunabhängigen Code (damit sie in eine dynamische Bibliothek gelinkt werden kann). Diese Option hat keine Auswirkung unter Windows und OS X, da sie unter Windows nicht sinnvoll ist und PIC unter OS X nicht deaktiviert werden kann.

(seit 0.36.0)

rust_abi str

Setzt die spezifische ABI, die kompiliert werden soll (beim Kompilieren von Rust).

  • 'rust' (Standard): Erzeugt ein "rlib" oder "dylib" Kiste, abhängig vom Typ der zu erstellenden Bibliothek.

  • 'c': Erzeugt eine "cdylib" oder "staticlib" Kiste, abhängig vom Typ der zu erstellenden Bibliothek.

(seit 1.3.0)

rust_crate_type str

Setzt den spezifischen Typ der zu kompilierenden Rust-Kiste (beim Kompilieren von Rust).

Wenn das Ziel eine executable() ist, ist der Standardwert "bin", der einzige erlaubte Wert.

Wenn es sich um eine static_library() handelt, ist der Standardwert "lib" und kann "lib", "staticlib" oder "rlib" sein. Wenn "lib", wählt Rustc einen Standardwert, "staticlib" bedeutet eine Bibliothek mit C-ABI, "rlib" bedeutet eine Bibliothek mit Rust-ABI.

Wenn es sich um eine shared_library() handelt, ist der Standardwert "lib" und kann "lib", "dylib", "cdylib" oder "proc-macro" sein. Wenn "lib", wählt Rustc einen Standardwert, "cdylib" bedeutet eine Bibliothek mit C-ABI, "dylib" bedeutet eine Bibliothek mit Rust-ABI, und "proc-macro" ist eine spezielle rust-prozedurale Makrokiste.

"proc-macro" ist neu in 0.62.0.

Seit 1.3.0 ist dies veraltet und ersetzt durch das Schlüsselwortargument "rust_abi". proc_macro-Kisten werden jetzt durch die Methode rust.proc_macro() behandelt.

(seit 0.42.0)

VERALTET

in 1.3.0

rust_dependency_map dict[str]

Bei Rust-Zielen bietet dies eine Zuordnung von Bibliotheksnamen zum Kistenamen, unter dem sie im Rust-Code verfügbar wären.

Dies ermöglicht Umbenennungen ähnlich der Abhängigkeitsumbenennungsfunktion von Cargo oder extern crate foo as bar im Rust-Code.

(seit 1.2.0)

sources str | file | custom_tgt | custom_idx | generated_list | structured_src

Zusätzliche Quellcodedateien. Ähnlich wie die Quellcode-Varargs.

soversion str | int

Eine Zeichenkette oder Ganzzahl, die die Soversion dieser dynamischen Bibliothek angibt, z. B. 0. Unter Linux und Windows wird dies verwendet, um die Soversion (oder eine Entsprechung) im Dateinamen festzulegen. Wenn soversion beispielsweise 4 ist, wird eine Windows-DLL foo-4.dll genannt und eine der Aliase der Linux-Shared-Bibliothek wäre libfoo.so.4. Wenn dies nicht angegeben wird, wird stattdessen der erste Teil von version verwendet (siehe unten). Wenn beispielsweise version 3.6.0 ist und soversion nicht definiert ist, wird es auf 3 gesetzt.

vala_args list[str | file]

Compiler-Flags für Vala. Im Gegensatz zu anderen Sprachen können diese Dateien enthalten

vala_shared_args list[str | file]

Argumente, die nur an eine dynamische Bibliothek übergeben werden. Ähnlich wie vala_args ist files() zusätzlich zu Zeichenketten erlaubt

(seit 1.3.0)

vala_static_args list[str | file]

Argumente, die nur an eine statische Bibliothek übergeben werden. Ähnlich wie vala_args ist files() zusätzlich zu Zeichenketten erlaubt

(seit 1.3.0)

Version str

Ein String, der die Version dieser Shared Library angibt, z. B. 1.1.0. Unter Linux und OS X wird dies verwendet, um die Version der Shared Library im Dateinamen festzulegen, z. B. libfoo.so.1.1.0 und libfoo.1.1.0.dylib. Wenn dies nicht angegeben ist, wird stattdessen soversion verwendet (siehe oben).

vs_module_defs str | file | custom_tgt | custom_idx

Gibt eine Microsoft-Moduldefinitionsdatei zur Steuerung von Symbol-Exporten usw. auf Plattformen an, auf denen dies möglich ist (z. B. Windows).

(Seit 1.3.0) custom_idx wird unterstützt

win_subsystem str

Gibt den Subsystemtyp für die Windows-Plattform an. Typische Werte sind console für Textmodusprogramme und windows für GUI-Anwendungen. Der Wert kann auch eine Versionsangabe enthalten, z. B. windows,6.0. Die vollständige Liste finden Sie in der MSDN-Dokumentation.

(seit 0.56.0)

Standard = 'console'


message()

Diese Funktion gibt ihr Argument auf stdout aus.

Signatur

# This function prints its argument to stdout
void message(
  str | int | bool | list[str | int | bool] | dict[str | int | bool] text,          # The message to print
  str | int | bool | list[str | int | bool] | dict[str | int | bool] more_text...,  # Additional text that will be printed separated by spaces
)

Argumente

Die Argumentabflachung wird von dieser Funktion NICHT UNTERSTÜTZT.

Die Funktion message() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
text str | int | bool | list[str | int | bool] | dict[str | int | bool]

Die auszugebende Nachricht.

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (more_text...) vom Typ str | int | bool | list[str | int | bool] | dict[str | int | bool].

Zusätzlicher Text, der durch Leerzeichen getrennt ausgegeben wird.

(seit 0.54.0)


project()

Die erste in jedem Projekt aufgerufene Funktion, um Meson zu initialisieren.

Das erste Argument dieser Funktion muss ein String sein, der den Namen dieses Projekts definiert.

Der Projektname kann jeder gewünschte String sein, er wird nur zu beschreibenden Zwecken verwendet. Da er jedoch in z. B. das Abhängigkeitsmanifest geschrieben wird, ist es normalerweise sinnvoll, ihn gleich dem Projekttarball oder dem pkg-config-Namen zu wählen. So würden Sie wahrscheinlich eher den Namen libfoobar anstelle von The Foobar Library verwenden.

Es kann gefolgt von der Liste der Programmiersprachen sein, die das Projekt verwendet.

(seit 0.40.0) Die Liste der Sprachen ist optional.

Diese Sprachen können sowohl für native: false (Standard) (Host-Maschine) Ziele als auch für native: true (Build-Maschine) Ziele verwendet werden. (seit 0.56.0) Die Compiler der Build-Maschine für die angegebenen Sprachen sind nicht erforderlich.

Unterstützte Werte für Sprachen sind c, cpp (für C++), cuda, cython, d, objc, objcpp, fortran, java, cs (für C#), vala und rust.

Signatur

# The first function called in each project, to initialize Meson
void project(
  str project_name,     # The name of the project
  str language...,      # The languages that Meson should initialize

  # Keyword arguments:
  default_options : list[str] | dict[str | bool | int | list[str]]  # Accepts strings in the form `key=value`
  license         : str | list[str]                               # Takes a string or array of strings describing the license(s) the code is under
  license_files   : str | list[str]                               # Takes a string or array of strings with the paths to the license file(s)
  meson_version   : str                                           # Takes a string describing which Meson version the project requires
  subproject_dir  : str                                           # Specifies the top level directory name that holds Meson subprojects
  version         : str | file                                    # A free form string describing the version of this project
)

Argumente

Die Funktion project() akzeptiert die folgenden Positionsargumente

Name Typ Beschreibung Schlagwörter
project_name str

Der Name des Projekts.

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (language...) vom Typ str.

Die Sprachen, die Meson initialisieren soll.

Schließlich akzeptiert project() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
default_options list[str] | dict[str | bool | int | list[str]]

Akzeptiert Zeichenketten im Format Schlüssel=Wert, die dasselbe Format wie Optionen für meson configure haben. Um beispielsweise den Standardprojekttyp festzulegen, würden Sie dies einstellen: default_options : ['buildtype=debugoptimized']. Beachten Sie, dass diese Einstellungen nur beim erstmaligen Ausführen von Meson verwendet werden. Globale Optionen wie buildtype können nur im Hauptprojekt angegeben werden, Einstellungen in Unterprojekten werden ignoriert. Projektspezifische Optionen werden auch in Unterprojekten normal verwendet.

Beachten Sie, dass einige Optionen das Standardverhalten überschreiben können; die Verwendung von c_args hier bedeutet beispielsweise, dass die Umgebungsvariable CFLAGS nicht verwendet wird. Erwägen Sie stattdessen die Verwendung von [add_project_arguments()].

(seit 1.2.0): Es kann nun ein Dictionary übergeben werden.

license str | list[str]

Akzeptiert eine Zeichenkette oder ein Array von Zeichenketten, die die Lizenz(en) beschreiben, unter denen der Code steht.

Dies sollte ein SPDX-Lizenz-Ausdruck sein, der die standardisierte Lizenzkennung aus der SPDX-Lizenzliste verwendet. Normalerweise wäre dies so etwas wie license : 'GPL-2.0-or-later'. Wenn es mehrere Lizenzen gibt, können Sie die Operatoren AND und OR verwenden, um sie zu verbinden: license : 'Apache-2.0 OR GPL-2.0'.

Aus Kompatibilitätsgründen können Sie hier auch ein Array von Lizenzen übergeben. Dies wird nicht empfohlen, da es mehrdeutig ist: license : ['Apache-2.0', 'GPL-2.0-only'] verwenden Sie stattdessen einen SPDX-Ausdruck: license : 'Apache-2.0 OR GPL-2.0-only', was klarstellt, dass die Lizenz OR und nicht AND bedeutet.

Beachten Sie, dass der Text informell ist und nur in das Abhängigkeitsmanifest geschrieben wird. Meson führt keine Lizenzvalidierung durch; Sie sind dafür verantwortlich, zu überprüfen, ob Sie alle Lizenzbedingungen einhalten. Sie können auf den Wert in Ihren Meson-Build-Dateien mit meson.project_license() zugreifen.

license_files str | list[str]

Akzeptiert eine Zeichenkette oder ein Array von Zeichenketten mit den Pfaden zu den Lizenzdateien, unter denen der Code steht.

Dies erweitert den Wert des `license`-Schlüsselwortarguments, indem sowohl der kurze Lizenzname als auch der vollständige Lizenztext angegeben werden können. Normalerweise wäre dies so etwas wie license_files: ['COPYING'].

Beachten Sie, dass die Dateien informell sind und nur zusammen mit dem Abhängigkeitsmanifest installiert werden. Meson führt keine Lizenzvalidierung durch; Sie sind dafür verantwortlich, zu überprüfen, ob Sie alle Lizenzbedingungen einhalten. Sie können auf den Wert in Ihren Meson-Build-Dateien mit meson.project_license_files() zugreifen.

(seit 1.1.0)

meson_version str

Akzeptiert eine Zeichenkette, die beschreibt, welche Meson-Version das Projekt benötigt. Normalerweise so etwas wie >=0.28.0.

subproject_dir str

Gibt den Namen des Top-Level-Verzeichnisses an, das Meson-Unterprojekte enthält. Dies ist nur als Kompatibilitätsoption für bestehende Codebasen gedacht, die ihren eingebetteten Quellcode in einem benutzerdefinierten Verzeichnis unterbringen. Alle neuen Projekte sollten dies nicht setzen, sondern den Standardwert verwenden. Es ist zu beachten, dass dieses Schlüsselwortargument in Unterprojekten ignoriert wird. Es kann nur ein Unterprojektverzeichnis geben, und es wird in der Top-Level-Meson-Datei gesetzt.

default = 'subprojects'

Version str | file

Eine Freitextzeichenkette, die die Version dieses Projekts beschreibt. Sie können auf den Wert in Ihren Meson-Build-Dateien mit meson.project_version() zugreifen. (Seit 0.57.0) Dies kann auch ein file-Objekt sein, das auf eine Datei zeigt, die genau eine Textzeile enthält.


range()

Gibt ein opakes Objekt zurück, das nur in foreach-Anweisungen verwendet werden kann.

range range(int stop)
range range(int start, int stop[, int step])
  • start muss eine Ganzzahl größer oder gleich 0 sein. Standardwert ist 0.
  • stop muss eine Ganzzahl größer oder gleich start sein.
  • step muss eine Ganzzahl größer oder gleich 1 sein. Standardwert ist 1.

Dies bewirkt, dass die foreach-Schleife mit dem Wert von start (einschließlich) bis stop (ausschließlich) mit einer Schrittweite von step nach jeder Schleife aufgerufen wird.

Signatur

(seit 0.58.0)

# Return an opaque object that can be only be used in `foreach` statements
range range(
  int [start],   # The start of the range
  int [stop],    # The end of the range
  int [step],    # The loop increment
)

Beispiel

# Loop 15 times with i from 0 to 14 included.
foreach i : range(15)
  ...
endforeach

Das Bereichsobjekt kann auch einer Variablen zugewiesen und indiziert werden.

r = range(5, 10, 2)
assert(r[2] == 9)

Argumente

Die Funktion range() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
start int

Der Anfang des Bereichs

[optional]

Standard = 0

stop int

Das Ende des Bereichs

[optional]

step int

Die Schleifeninkrementierung

[optional]

Standard = 1


run_command()

Führt den in den positionsgebundenen Argumenten angegebenen Befehl aus. command kann eine Zeichenkette sein oder die Ausgabe von find_program(), files() oder configure_file(), oder ein Compiler-Objekt.

Gibt ein runresult-Objekt zurück, das das Ergebnis des Aufrufs enthält. Der Befehl wird von einem nicht spezifizierten Verzeichnis aus ausgeführt, und Meson setzt drei Umgebungsvariablen MESON_SOURCE_ROOT, MESON_BUILD_ROOT und MESON_SUBDIR, die das Quellverzeichnis, das Build-Verzeichnis bzw. das Unterverzeichnis angeben, in dem das Ziel definiert wurde.

Siehe auch Externe Befehle.

Signatur

# Runs the command specified in positional arguments
runresult run_command(
  str | file | external_program command...,  # The command to execute during the setup process

  # Keyword arguments:
  capture : bool                         # If `true`, any output generated on stdout will be captured and returned by
  check   : bool                         # If `true`, the exit status code of the command will be checked,
  env     : env | list[str] | dict[str]  # environment variables to set,
)

Argumente

Die Funktion akzeptiert zwischen 0 und unendlich variable Argumente (command...) vom Typ str | file | external_program.

Der auszuführende Befehl während des Einrichtungssprozesses.

Die Funktion run_command() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
capture bool

Wenn true, wird jede auf stdout generierte Ausgabe erfasst und von der Methode .stdout() zurückgegeben. Wenn false, gibt .stdout() eine leere Zeichenkette zurück.

(seit 0.47.0)

Standard = true

check bool

Wenn true, wird der Exit-Statuscode des Befehls überprüft, und die Konfiguration schlägt fehl, wenn er nicht null ist. Beachten Sie, dass der Standardwert in zukünftigen Versionen true sein wird.

(seit 0.47.0)

Standard = false

env env | list[str] | dict[str]

Umgebungsvariablen, die gesetzt werden sollen, wie z. B. ['NAME1=value1', 'NAME2=value2'], oder ein env-Objekt, das eine ausgefeiltere Umgebungsverwaltung ermöglicht. (Seit 0.52.0) Ein Dictionary wird ebenfalls akzeptiert.

(seit 0.50.0)


run_target()

Diese Funktion erstellt ein neues Top-Level-Ziel, das einen angegebenen Befehl mit den angegebenen Argumenten ausführt. Wie alle Top-Level-Ziele integriert sich dies in das ausgewählte Backend. Sie können es beispielsweise als meson compile target_name ausführen. Beachten Sie, dass ein Ausführungsziel in Bezug auf Meson keine Ausgabe erzeugt. Es dient nur für Aufgaben wie das Ausführen eines Code-Formatierers oder das Flashen der Firmware eines externen Geräts mit einer erstellten Datei.

Der Befehl wird von einem nicht spezifizierten Verzeichnis aus ausgeführt, und Meson setzt drei Umgebungsvariablen MESON_SOURCE_ROOT, MESON_BUILD_ROOT und MESON_SUBDIR, die das Quellverzeichnis, das Build-Verzeichnis bzw. das Unterverzeichnis angeben, in dem das Ziel definiert wurde.

Seit 0.57.0 Die an die command-Schlüsselwortargumente übergebenen Vorlagenzeichenketten akzeptieren die folgenden speziellen Ersetzungen

  • @SOURCE_ROOT@: der Pfad zum Stammverzeichnis des Quellcodes. Abhängig vom Backend kann dies ein absoluter oder ein relativer Pfad zum aktuellen Arbeitsverzeichnis sein.
  • @BUILD_ROOT@: der Pfad zum Stammverzeichnis des Build-Verzeichnisses. Abhängig vom Backend kann dies ein absoluter oder ein relativer Pfad zum aktuellen Arbeitsverzeichnis sein.
  • @CURRENT_SOURCE_DIR@ Seit 0.57.1: Dies ist das Verzeichnis, in dem sich die aktuell verarbeitete meson.build-Datei befindet. Je nach Backend kann dies ein absoluter Pfad oder ein relativ zum aktuellen Arbeitsverzeichnis sein.

Signatur

# This function creates a new top-level target that runs a specified
run_tgt run_target(
  str target_name,     # The name of the run target

  # Keyword arguments:
  command : list[exe | external_program | custom_tgt | file | str]  # A list containing the command to run and the arguments
  depends : list[build_tgt | custom_tgt | custom_idx]               # A list of targets that this target depends on but which
  env     : env | list[str] | dict[str]                             # environment variables to set, such as
)

Argumente

Die Funktion run_target() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
zielname str

Der Name des Ausführungsziels

Schließlich akzeptiert run_target() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
command list[exe | external_program | custom_tgt | file | str]

Eine Liste, die den auszuführenden Befehl und die ihm zu übergebenden Argumente enthält. Jedes Listenelement kann eine Zeichenkette oder ein Ziel sein. Beispielsweise führt die Übergabe des Rückgabewerts von executable() als erstes Element diese ausführbare Datei aus, oder die Übergabe einer Zeichenkette als erstes Element findet diesen Befehl in PATH und führt ihn aus.

abhängig list[build_tgt | custom_tgt | custom_idx]

Eine Liste von Zielen, von denen dieses Ziel abhängt, die aber nicht in der Befehlsmatrix aufgeführt sind (z. B. weil das Skript intern Dateiglobbing durchführt, custom_idx war zwischen 0.60 und 1.4.0 nicht als Typ möglich).

env env | list[str] | dict[str]

Umgebungsvariablen, die gesetzt werden sollen, wie z. B. {'NAME1': 'value1', 'NAME2': 'value2'} oder ['NAME1=value1', 'NAME2=value2'], oder ein env-Objekt, das eine ausgefeiltere Verwaltung der Umgebung ermöglicht.

(seit 0.57.0)


set_variable()

Weist dem angegebenen Variablennamen einen Wert zu. Der Aufruf von set_variable('foo', bar) ist äquivalent zu foo = bar.

(seit 0.46.1) Der Parameter value kann vom Typ Array sein.

Signatur

# Assigns a value to the given variable name
void set_variable(
  str variable_name,     # The name of the variable to set
  any value,             # The value to set the variable to
)

Argumente

Die Argumentabflachung wird von dieser Funktion NICHT UNTERSTÜTZT.

Die Funktion set_variable() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
variable_name str

Der Name der zu setzenden Variablen

value any

Der Wert, auf den die Variable gesetzt werden soll


shared_library()

Erstellt eine Shared Library mit den gegebenen Quellen.

Signatur

# Builds a shared library with the given sources
lib shared_library(
  str                                                   target_name,     # The *unique* name of the build target
  str | file | custom_tgt | custom_idx | generated_list source...,       # Input source to compile

  # Keyword arguments:
  <lang>_args                  : list[str]                                                               # compiler flags to use for the given language;
  <lang>_pch                   : str                                                                     # precompiled header file to use for the given language
  build_by_default             : bool                                                                    # Causes, when set to `true`, to have this target be built by default
  build_rpath                  : str                                                                     # A string to add to target's rpath definition in the build dir,
  d_debug                      : list[str]                                                               # The [D version identifiers](https://dlang
  d_import_dirs                : list[inc | str]                                                         # the directories to add to the string search path (i
  d_module_versions            : list[str | int]                                                         # List of module version identifiers set when compiling D sources
  d_unittest                   : bool                                                                    # When set to true, the D modules are compiled in debug mode
  darwin_versions              : str | int | list[str]                                                   # Defines the `compatibility version` and `current version` for the dylib on macOS
  dependencies                 : list[dep]                                                               # one or more dependency objects
  extra_files                  : str | file | custom_tgt | custom_idx                                    # Not used for the build itself but are shown as source files in IDEs
  gnu_symbol_visibility        : str                                                                     # Specifies how symbols should be exported, see
  gui_app                      : bool                                                                    # When set to true flags this target as a GUI application
  implicit_include_directories : bool                                                                    # Controls whether Meson adds the current source and build directories to the include path
  include_directories          : list[inc | str]                                                         # one or more objects created with the include_directories() function,
  install                      : bool                                                                    # When set to true, this executable should be installed
  install_dir                  : str                                                                     # override install directory for this file
  install_mode                 : list[str | int]                                                         # Specify the file mode in symbolic format
  install_rpath                : str                                                                     # A string to set the target's rpath to after install
  install_tag                  : str                                                                     # A string used by the `meson install --tags` command
  link_args                    : list[str]                                                               # Flags to use during linking
  link_depends                 : str | file | custom_tgt | custom_idx                                    # Strings, files, or custom targets the link step depends on
  link_language                : str                                                                     # Makes the linker for this target be for the specified language
  link_whole                   : list[lib | custom_tgt | custom_idx]                                     # Links all contents of the given static libraries whether they are used or
  link_with                    : list[lib | custom_tgt | custom_idx]                                     # One or more shared or static libraries
  name_prefix                  : str | list[void]                                                        # The string that will be used as the prefix for the
  name_suffix                  : str | list[void]                                                        # The string that will be used as the extension for the
  native                       : bool                                                                    # Controls whether the target is compiled for the build or host machines
  objects                      : list[extracted_obj | file | str]                                        # List of object files that should be linked in this target
  override_options             : list[str] | dict[str | bool | int | list[str]]                            # takes an array of strings in the same format as `project`'s `default_options`
  rust_abi                     : str                                                                     # Set the specific ABI to compile (when compiling rust)
  rust_crate_type              : str                                                                     # Set the specific type of rust crate to compile (when compiling rust)
  rust_dependency_map          : dict[str]                                                               # On rust targets this provides a map of library names to the crate name
  sources                      : str | file | custom_tgt | custom_idx | generated_list | structured_src  # Additional source files
  soversion                    : str | int                                                               # A string or integer specifying the soversion of this shared library,
  vala_args                    : list[str | file]                                                        # Compiler flags for Vala
  version                      : str                                                                     # A string specifying the version of this shared library,
  vs_module_defs               : str | file | custom_tgt | custom_idx                                    # Specify a Microsoft module definition file for controlling symbol exports,
  win_subsystem                : str                                                                     # Specifies the subsystem type to use
)

Argumente

Die Funktion shared_library() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
zielname str

Der *eindeutige* Name des Build-Ziels

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (quelle...) vom Typ str | file | custom_tgt | custom_idx | generated_list.

Eingabequelle zum Kompilieren. Die folgenden Typen werden unterstützt

  • Zeichenketten relativ zum aktuellen Quellverzeichnis
  • file-Objekte, die in früheren Build-Dateien definiert wurden
  • Der Rückgabewert von Konfigurationszeit-Generatoren wie configure_file()
  • Der Rückgabewert von Build-Zeit-Generatoren wie custom_target() oder generator.process()

Diese Eingabedateien können Quellen, Objekte, Bibliotheken oder beliebige andere Dateien sein. Meson kategorisiert sie automatisch anhand der Erweiterung und verwendet sie entsprechend. Zum Beispiel werden Quellen (.c, .cpp, .vala, .rs usw.) kompiliert und Objekte (.o, .obj) und Bibliotheken (.so, .dll usw.) verknüpft.

Mit dem Ninja-Backend erstellt Meson eine Build-Zeit-Abhängigkeit (order-only dependency) für alle generierten Eingabedateien, einschließlich unbekannter Dateien. Dies ist notwendig, um die Generierung der tatsächlichen Abhängigkeiten in der von Ihrem Compiler generierten Depfile zu bootstrappen, um zu bestimmen, wann Quellen neu kompiliert werden müssen. Ninja stützt sich für alle Eingabedateien, generierten und nicht generierten, auf diese Abhängigkeitsdatei. Das Verhalten ist für andere Backends ähnlich.

Schließlich akzeptiert shared_library() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
<lang>_args list[str]

Compiler-Flags für die angegebene Sprache; z. B. cpp_args für C++

<lang>_pch str

Vorkompilierte Header-Datei für die angegebene Sprache

build_by_default bool

Wenn auf true gesetzt, wird dieses Ziel standardmäßig erstellt. Das bedeutet, es wird erstellt, wenn meson compile ohne Argumente aufgerufen wird. Der Standardwert ist true für alle Build-Zieltypen.

(seit 0.38.0)

Standard = true

build_rpath str

Eine Zeichenkette, die der RPATH-Definition des Ziels im Build-Verzeichnis hinzugefügt wird, aber bei der Installation entfernt wird

(seit 0.42.0)

d_debug list[str]

Die D-Versions-Identifikatoren, die während der Kompilierung von D-Quelldateien hinzugefügt werden sollen.

d_import_dirs list[inc | str]

Die Verzeichnisse, die zum String-Suchpfad hinzugefügt werden sollen (d. h. der -J-Schalter für DMD). Müssen inc-Objekte oder einfache Zeichenketten sein.

(seit 0.62.0)

d_module_versions list[str | int]

Liste der Modulversions-Identifikatoren, die beim Kompilieren von D-Quellen gesetzt werden.

d_unittest bool

Wenn true gesetzt, werden die D-Module im Debug-Modus kompiliert.

Standard = false

darwin_versions str | int | list[str]

Definiert die compatibility version und current version für die dylib unter macOS. Wenn eine Liste angegeben wird, muss sie null, ein oder zwei Elemente enthalten. Wenn nur ein Element angegeben wird oder es sich nicht um eine Liste handelt, wird der angegebene Wert zum Setzen der Kompatibilitäts- und aktuellen Version verwendet. Wenn nicht angegeben, wird die soversion wie nach den oben genannten Regeln verwendet.

(seit 0.48.0)

dependencies list[dep]

Ein oder mehrere Abhängigkeitsobjekte, die mit dependency() oder compiler.find_library() (für externe Abhängigkeiten) oder declare_dependency() (für vom Projekt erstellte Abhängigkeiten) erstellt wurden.

extra_files str | file | custom_tgt | custom_idx

Nicht für den Build selbst verwendet, aber in IDEs, die Dateien nach Zielen gruppieren (wie z. B. Visual Studio), als Quelldateien angezeigt.

gnu_symbol_visibility str

Gibt an, wie Symbole exportiert werden sollen, siehe z. B. das GCC-Wiki für weitere Informationen. Dieser Wert kann entweder eine leere Zeichenkette oder einer der Werte default, internal, hidden, protected oder inlineshidden sein, was dasselbe wie hidden ist, aber auch Dinge wie C++ implizite Konstruktoren wie im GCC-Handbuch beschrieben enthält. Ignoriert bei Compilern, die GNU Visibility-Argumente nicht unterstützen.

(seit 0.48.0)

gui_app bool

Wenn true gesetzt, kennzeichnet dieses Ziel als GUI-Anwendung auf Plattformen, wo dies einen Unterschied macht, veraltet seit 0.56.0, verwenden Sie stattdessen win_subsystem.

VERALTET

in 0.56.0

Standard = false

implicit_include_directories bool

Steuert, ob Meson die aktuellen Quell- und Build-Verzeichnisse zum Include-Pfad hinzufügt

(seit 0.42.0)

Standard = true

include_directories list[inc | str]

Ein oder mehrere Objekte, die mit der Funktion include_directories() erstellt wurden, oder (seit 0.50.0) Zeichenketten, die transparent in Include-Verzeichnisobjekte erweitert werden.

installieren bool

Wenn true gesetzt, soll diese ausführbare Datei installiert werden.

Standard = false

install_dir str

Überschreibt das Installationsverzeichnis für diese Datei. Wenn der Wert ein relativer Pfad ist, wird er relativ zur Option prefix betrachtet. Wenn Sie beispielsweise Plugins in einem Unterverzeichnis installieren möchten, würden Sie so etwas verwenden: install_dir : get_option('libdir') / 'projectname-1.0'.

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und Gruppe/GID für die installierten Dateien an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

(seit 0.47.0)

install_rpath str

Eine Zeichenkette, die den RPATH des Ziels nach der Installation setzt (aber *nicht* davor). Unter Windows hat dieses Argument keine Wirkung.

install_tag str

Eine Zeichenkette, die vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge von Dateien zu installieren. Standardmäßig haben alle Build-Ziele den Tag runtime, mit Ausnahme von statischen Bibliotheken, die den Tag devel haben.

(seit 0.60.0)

name_prefix str | list[void]

Die Zeichenkette, die als Präfix für den Ausgabedateinamen des Ziels verwendet wird, indem der Standard überschrieben wird (nur für Bibliotheken verwendet). Standardmäßig ist dies lib auf allen Plattformen und Compilern, außer bei MSVC-Shared-Bibliotheken, wo es zur Konvention weggelassen wird, und Cygwin-Shared-Bibliotheken, wo es cyg ist.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

name_suffix str | list[void]

Die Zeichenkette, die als Erweiterung für das Ziel verwendet wird, indem der Standard überschrieben wird. Standardmäßig ist unter Windows exe für ausführbare Dateien und auf anderen Plattformen wird es weggelassen.

Für dynamische Bibliotheken ist der Standardwert dylib unter macOS, dll unter Windows und so überall sonst. Für statische Bibliotheken ist es überall a. Konventionsgemäß verwenden MSVC-statische Bibliotheken die lib-Erweiterung, aber wir verwenden a, um eine mögliche Namenskollision mit dynamischen Bibliotheken zu vermeiden, die ebenfalls Importbibliotheken mit der Erweiterung lib generieren.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

native bool

Steuert, ob das Ziel für die Build- oder Host-Maschine kompiliert wird.

Standard = false

objekte list[extracted_obj | file | str]

Liste der Objektdateien, die in diesem Ziel verknüpft werden sollen.

Seit 1.1.0 kann dies generierte Dateien zusätzlich zu Objektdateien enthalten, für die Sie keine Quelle haben, oder die von anderen Build-Zielen erzeugte Objektdateien. In früheren Versionen mussten generierte Objektdateien in sources platziert werden.

override_options list[str] | dict[str | bool | int | list[str]]

Nimmt ein Array von Zeichenketten im selben Format wie die default_options von project, überschreibt die Werte dieser Optionen nur für dieses Ziel. (seit 1.2.0): Ein Dictionary kann jetzt übergeben werden.

(seit 0.40.0)

rust_abi str

Setzt die spezifische ABI, die kompiliert werden soll (beim Kompilieren von Rust).

  • 'rust' (Standard): Erstellt eine "dylib"-Crate.

  • 'c': Erstellt eine "cdylib"-Crate.

(seit 1.3.0)

rust_crate_type str

Setzt den spezifischen Typ der zu kompilierenden Rust-Kiste (beim Kompilieren von Rust).

Wenn das Ziel eine executable() ist, ist der Standardwert "bin", der einzige erlaubte Wert.

Wenn es sich um eine static_library() handelt, ist der Standardwert "lib" und kann "lib", "staticlib" oder "rlib" sein. Wenn "lib", wählt Rustc einen Standardwert, "staticlib" bedeutet eine Bibliothek mit C-ABI, "rlib" bedeutet eine Bibliothek mit Rust-ABI.

Wenn es sich um eine shared_library() handelt, ist der Standardwert "lib" und kann "lib", "dylib", "cdylib" oder "proc-macro" sein. Wenn "lib", wählt Rustc einen Standardwert, "cdylib" bedeutet eine Bibliothek mit C-ABI, "dylib" bedeutet eine Bibliothek mit Rust-ABI, und "proc-macro" ist eine spezielle rust-prozedurale Makrokiste.

"proc-macro" ist neu in 0.62.0.

Seit 1.3.0 ist dies veraltet und ersetzt durch das Schlüsselwortargument "rust_abi". proc_macro-Kisten werden jetzt durch die Methode rust.proc_macro() behandelt.

(seit 0.42.0)

VERALTET

in 1.3.0

rust_dependency_map dict[str]

Bei Rust-Zielen bietet dies eine Zuordnung von Bibliotheksnamen zum Kistenamen, unter dem sie im Rust-Code verfügbar wären.

Dies ermöglicht Umbenennungen ähnlich der Abhängigkeitsumbenennungsfunktion von Cargo oder extern crate foo as bar im Rust-Code.

(seit 1.2.0)

sources str | file | custom_tgt | custom_idx | generated_list | structured_src

Zusätzliche Quellcodedateien. Ähnlich wie die Quellcode-Varargs.

soversion str | int

Eine Zeichenkette oder Ganzzahl, die die Soversion dieser dynamischen Bibliothek angibt, z. B. 0. Unter Linux und Windows wird dies verwendet, um die Soversion (oder eine Entsprechung) im Dateinamen festzulegen. Wenn soversion beispielsweise 4 ist, wird eine Windows-DLL foo-4.dll genannt und eine der Aliase der Linux-Shared-Bibliothek wäre libfoo.so.4. Wenn dies nicht angegeben wird, wird stattdessen der erste Teil von version verwendet (siehe unten). Wenn beispielsweise version 3.6.0 ist und soversion nicht definiert ist, wird es auf 3 gesetzt.

vala_args list[str | file]

Compiler-Flags für Vala. Im Gegensatz zu anderen Sprachen können diese Dateien enthalten

Version str

Ein String, der die Version dieser Shared Library angibt, z. B. 1.1.0. Unter Linux und OS X wird dies verwendet, um die Version der Shared Library im Dateinamen festzulegen, z. B. libfoo.so.1.1.0 und libfoo.1.1.0.dylib. Wenn dies nicht angegeben ist, wird stattdessen soversion verwendet (siehe oben).

vs_module_defs str | file | custom_tgt | custom_idx

Gibt eine Microsoft-Moduldefinitionsdatei zur Steuerung von Symbol-Exporten usw. auf Plattformen an, auf denen dies möglich ist (z. B. Windows).

(Seit 1.3.0) custom_idx wird unterstützt

win_subsystem str

Gibt den Subsystemtyp für die Windows-Plattform an. Typische Werte sind console für Textmodusprogramme und windows für GUI-Anwendungen. Der Wert kann auch eine Versionsangabe enthalten, z. B. windows,6.0. Die vollständige Liste finden Sie in der MSDN-Dokumentation.

(seit 0.56.0)

Standard = 'console'


shared_module()

Erstellt ein Shared Module mit den gegebenen Quellen.

Dies ist nützlich zum Erstellen von Modulen, die mittels dlopen() geladen werden und daher undefinierte Symbole enthalten können, die von der ladenden Bibliothek bereitgestellt werden.

Wenn das Shared Module auf Funktionen und Variablen verweisen soll, die in der von ihm geladenen executable() definiert sind, müssen Sie das Argument export_dynamic der ausführbaren Datei auf true setzen.

Signatur

(seit 0.37.0)

# Builds a shared module with the given sources
build_tgt shared_module(
  str                                                   target_name,     # The *unique* name of the build target
  str | file | custom_tgt | custom_idx | generated_list source...,       # Input source to compile

  # Keyword arguments:
  <lang>_args                  : list[str]                                                               # compiler flags to use for the given language;
  <lang>_pch                   : str                                                                     # precompiled header file to use for the given language
  build_by_default             : bool                                                                    # Causes, when set to `true`, to have this target be built by default
  build_rpath                  : str                                                                     # A string to add to target's rpath definition in the build dir,
  d_debug                      : list[str]                                                               # The [D version identifiers](https://dlang
  d_import_dirs                : list[inc | str]                                                         # the directories to add to the string search path (i
  d_module_versions            : list[str | int]                                                         # List of module version identifiers set when compiling D sources
  d_unittest                   : bool                                                                    # When set to true, the D modules are compiled in debug mode
  dependencies                 : list[dep]                                                               # one or more dependency objects
  extra_files                  : str | file | custom_tgt | custom_idx                                    # Not used for the build itself but are shown as source files in IDEs
  gnu_symbol_visibility        : str                                                                     # Specifies how symbols should be exported, see
  gui_app                      : bool                                                                    # When set to true flags this target as a GUI application
  implicit_include_directories : bool                                                                    # Controls whether Meson adds the current source and build directories to the include path
  include_directories          : list[inc | str]                                                         # one or more objects created with the include_directories() function,
  install                      : bool                                                                    # When set to true, this executable should be installed
  install_dir                  : str                                                                     # override install directory for this file
  install_mode                 : list[str | int]                                                         # Specify the file mode in symbolic format
  install_rpath                : str                                                                     # A string to set the target's rpath to after install
  install_tag                  : str                                                                     # A string used by the `meson install --tags` command
  link_args                    : list[str]                                                               # Flags to use during linking
  link_depends                 : str | file | custom_tgt | custom_idx                                    # Strings, files, or custom targets the link step depends on
  link_language                : str                                                                     # Makes the linker for this target be for the specified language
  link_whole                   : list[lib | custom_tgt | custom_idx]                                     # Links all contents of the given static libraries whether they are used or
  link_with                    : list[lib | custom_tgt | custom_idx]                                     # One or more shared or static libraries
  name_prefix                  : str | list[void]                                                        # The string that will be used as the prefix for the
  name_suffix                  : str | list[void]                                                        # The string that will be used as the extension for the
  native                       : bool                                                                    # Controls whether the target is compiled for the build or host machines
  objects                      : list[extracted_obj | file | str]                                        # List of object files that should be linked in this target
  override_options             : list[str] | dict[str | bool | int | list[str]]                            # takes an array of strings in the same format as `project`'s `default_options`
  rust_abi                     : str                                                                     # Set the specific ABI to compile (when compiling rust)
  rust_crate_type              : str                                                                     # Set the specific type of rust crate to compile (when compiling rust)
  rust_dependency_map          : dict[str]                                                               # On rust targets this provides a map of library names to the crate name
  sources                      : str | file | custom_tgt | custom_idx | generated_list | structured_src  # Additional source files
  vala_args                    : list[str | file]                                                        # Compiler flags for Vala
  vs_module_defs               : str | file | custom_tgt | custom_idx                                    # Specify a Microsoft module definition file for controlling symbol exports,
  win_subsystem                : str                                                                     # Specifies the subsystem type to use
)
Hinweis

Das Verlinken zu einem Shared Module auf anderen Plattformen als Android ist veraltet und wird in Zukunft ein Fehler sein. Es war früher erlaubt, weil es die einzige Möglichkeit war, ein Shared-Library-ähnliches Ziel zu haben, das Verweise auf undefinierte Symbole enthielt. Seit 0.40.0 kann jedoch das Schlüsselwortargument override_options: von build_target() verwendet werden, um eine solche shared_library() zu erstellen, indem override_options: 'b_lundef=false' übergeben wird. Shared Modules haben andere Eigenschaften, die sie mit dem Verlinken inkompatibel machen, wie z. B. das Fehlen von SONAME. Unter macOS und iOS ist das Verlinken zu Shared Modules durch den Linker nicht erlaubt, daher verbieten wir es zur Konfigurationszeit. Unter Android muss ein Shared Module foo, das Symbole aus einem anderen Shared Module bar verwendet, auch zu bar verlinkt werden. Daher ist das Verlinken eines Shared Modules zu einem anderen unter Android immer erlaubt.

Argumente

Die Funktion shared_module() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
zielname str

Der *eindeutige* Name des Build-Ziels

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (quelle...) vom Typ str | file | custom_tgt | custom_idx | generated_list.

Eingabequelle zum Kompilieren. Die folgenden Typen werden unterstützt

  • Zeichenketten relativ zum aktuellen Quellverzeichnis
  • file-Objekte, die in früheren Build-Dateien definiert wurden
  • Der Rückgabewert von Konfigurationszeit-Generatoren wie configure_file()
  • Der Rückgabewert von Build-Zeit-Generatoren wie custom_target() oder generator.process()

Diese Eingabedateien können Quellen, Objekte, Bibliotheken oder beliebige andere Dateien sein. Meson kategorisiert sie automatisch anhand der Erweiterung und verwendet sie entsprechend. Zum Beispiel werden Quellen (.c, .cpp, .vala, .rs usw.) kompiliert und Objekte (.o, .obj) und Bibliotheken (.so, .dll usw.) verknüpft.

Mit dem Ninja-Backend erstellt Meson eine Build-Zeit-Abhängigkeit (order-only dependency) für alle generierten Eingabedateien, einschließlich unbekannter Dateien. Dies ist notwendig, um die Generierung der tatsächlichen Abhängigkeiten in der von Ihrem Compiler generierten Depfile zu bootstrappen, um zu bestimmen, wann Quellen neu kompiliert werden müssen. Ninja stützt sich für alle Eingabedateien, generierten und nicht generierten, auf diese Abhängigkeitsdatei. Das Verhalten ist für andere Backends ähnlich.

Schließlich akzeptiert shared_module() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
<lang>_args list[str]

Compiler-Flags für die angegebene Sprache; z. B. cpp_args für C++

<lang>_pch str

Vorkompilierte Header-Datei für die angegebene Sprache

build_by_default bool

Wenn auf true gesetzt, wird dieses Ziel standardmäßig erstellt. Das bedeutet, es wird erstellt, wenn meson compile ohne Argumente aufgerufen wird. Der Standardwert ist true für alle Build-Zieltypen.

(seit 0.38.0)

Standard = true

build_rpath str

Eine Zeichenkette, die der RPATH-Definition des Ziels im Build-Verzeichnis hinzugefügt wird, aber bei der Installation entfernt wird

(seit 0.42.0)

d_debug list[str]

Die D-Versions-Identifikatoren, die während der Kompilierung von D-Quelldateien hinzugefügt werden sollen.

d_import_dirs list[inc | str]

Die Verzeichnisse, die zum String-Suchpfad hinzugefügt werden sollen (d. h. der -J-Schalter für DMD). Müssen inc-Objekte oder einfache Zeichenketten sein.

(seit 0.62.0)

d_module_versions list[str | int]

Liste der Modulversions-Identifikatoren, die beim Kompilieren von D-Quellen gesetzt werden.

d_unittest bool

Wenn true gesetzt, werden die D-Module im Debug-Modus kompiliert.

Standard = false

dependencies list[dep]

Ein oder mehrere Abhängigkeitsobjekte, die mit dependency() oder compiler.find_library() (für externe Abhängigkeiten) oder declare_dependency() (für vom Projekt erstellte Abhängigkeiten) erstellt wurden.

extra_files str | file | custom_tgt | custom_idx

Nicht für den Build selbst verwendet, aber in IDEs, die Dateien nach Zielen gruppieren (wie z. B. Visual Studio), als Quelldateien angezeigt.

gnu_symbol_visibility str

Gibt an, wie Symbole exportiert werden sollen, siehe z. B. das GCC-Wiki für weitere Informationen. Dieser Wert kann entweder eine leere Zeichenkette oder einer der Werte default, internal, hidden, protected oder inlineshidden sein, was dasselbe wie hidden ist, aber auch Dinge wie C++ implizite Konstruktoren wie im GCC-Handbuch beschrieben enthält. Ignoriert bei Compilern, die GNU Visibility-Argumente nicht unterstützen.

(seit 0.48.0)

gui_app bool

Wenn true gesetzt, kennzeichnet dieses Ziel als GUI-Anwendung auf Plattformen, wo dies einen Unterschied macht, veraltet seit 0.56.0, verwenden Sie stattdessen win_subsystem.

VERALTET

in 0.56.0

Standard = false

implicit_include_directories bool

Steuert, ob Meson die aktuellen Quell- und Build-Verzeichnisse zum Include-Pfad hinzufügt

(seit 0.42.0)

Standard = true

include_directories list[inc | str]

Ein oder mehrere Objekte, die mit der Funktion include_directories() erstellt wurden, oder (seit 0.50.0) Zeichenketten, die transparent in Include-Verzeichnisobjekte erweitert werden.

installieren bool

Wenn true gesetzt, soll diese ausführbare Datei installiert werden.

Standard = false

install_dir str

Überschreibt das Installationsverzeichnis für diese Datei. Wenn der Wert ein relativer Pfad ist, wird er relativ zur Option prefix betrachtet. Wenn Sie beispielsweise Plugins in einem Unterverzeichnis installieren möchten, würden Sie so etwas verwenden: install_dir : get_option('libdir') / 'projectname-1.0'.

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und Gruppe/GID für die installierten Dateien an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

(seit 0.47.0)

install_rpath str

Eine Zeichenkette, die den RPATH des Ziels nach der Installation setzt (aber *nicht* davor). Unter Windows hat dieses Argument keine Wirkung.

install_tag str

Eine Zeichenkette, die vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge von Dateien zu installieren. Standardmäßig haben alle Build-Ziele den Tag runtime, mit Ausnahme von statischen Bibliotheken, die den Tag devel haben.

(seit 0.60.0)

name_prefix str | list[void]

Die Zeichenkette, die als Präfix für den Ausgabedateinamen des Ziels verwendet wird, indem der Standard überschrieben wird (nur für Bibliotheken verwendet). Standardmäßig ist dies lib auf allen Plattformen und Compilern, außer bei MSVC-Shared-Bibliotheken, wo es zur Konvention weggelassen wird, und Cygwin-Shared-Bibliotheken, wo es cyg ist.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

name_suffix str | list[void]

Die Zeichenkette, die als Erweiterung für das Ziel verwendet wird, indem der Standard überschrieben wird. Standardmäßig ist unter Windows exe für ausführbare Dateien und auf anderen Plattformen wird es weggelassen.

Für dynamische Bibliotheken ist der Standardwert dylib unter macOS, dll unter Windows und so überall sonst. Für statische Bibliotheken ist es überall a. Konventionsgemäß verwenden MSVC-statische Bibliotheken die lib-Erweiterung, aber wir verwenden a, um eine mögliche Namenskollision mit dynamischen Bibliotheken zu vermeiden, die ebenfalls Importbibliotheken mit der Erweiterung lib generieren.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

native bool

Steuert, ob das Ziel für die Build- oder Host-Maschine kompiliert wird.

Standard = false

objekte list[extracted_obj | file | str]

Liste der Objektdateien, die in diesem Ziel verknüpft werden sollen.

Seit 1.1.0 kann dies generierte Dateien zusätzlich zu Objektdateien enthalten, für die Sie keine Quelle haben, oder die von anderen Build-Zielen erzeugte Objektdateien. In früheren Versionen mussten generierte Objektdateien in sources platziert werden.

override_options list[str] | dict[str | bool | int | list[str]]

Nimmt ein Array von Zeichenketten im selben Format wie die default_options von project, überschreibt die Werte dieser Optionen nur für dieses Ziel. (seit 1.2.0): Ein Dictionary kann jetzt übergeben werden.

(seit 0.40.0)

rust_abi str

Setzt die spezifische ABI, die kompiliert werden soll (beim Kompilieren von Rust).

  • 'rust' (Standard): Erstellt eine "dylib"-Crate.

  • 'c': Erstellt eine "cdylib"-Crate.

(seit 1.3.0)

rust_crate_type str

Setzt den spezifischen Typ der zu kompilierenden Rust-Kiste (beim Kompilieren von Rust).

Wenn das Ziel eine executable() ist, ist der Standardwert "bin", der einzige erlaubte Wert.

Wenn es sich um eine static_library() handelt, ist der Standardwert "lib" und kann "lib", "staticlib" oder "rlib" sein. Wenn "lib", wählt Rustc einen Standardwert, "staticlib" bedeutet eine Bibliothek mit C-ABI, "rlib" bedeutet eine Bibliothek mit Rust-ABI.

Wenn es sich um eine shared_library() handelt, ist der Standardwert "lib" und kann "lib", "dylib", "cdylib" oder "proc-macro" sein. Wenn "lib", wählt Rustc einen Standardwert, "cdylib" bedeutet eine Bibliothek mit C-ABI, "dylib" bedeutet eine Bibliothek mit Rust-ABI, und "proc-macro" ist eine spezielle rust-prozedurale Makrokiste.

"proc-macro" ist neu in 0.62.0.

Seit 1.3.0 ist dies veraltet und ersetzt durch das Schlüsselwortargument "rust_abi". proc_macro-Kisten werden jetzt durch die Methode rust.proc_macro() behandelt.

(seit 0.42.0)

VERALTET

in 1.3.0

rust_dependency_map dict[str]

Bei Rust-Zielen bietet dies eine Zuordnung von Bibliotheksnamen zum Kistenamen, unter dem sie im Rust-Code verfügbar wären.

Dies ermöglicht Umbenennungen ähnlich der Abhängigkeitsumbenennungsfunktion von Cargo oder extern crate foo as bar im Rust-Code.

(seit 1.2.0)

sources str | file | custom_tgt | custom_idx | generated_list | structured_src

Zusätzliche Quellcodedateien. Ähnlich wie die Quellcode-Varargs.

vala_args list[str | file]

Compiler-Flags für Vala. Im Gegensatz zu anderen Sprachen können diese Dateien enthalten

vs_module_defs str | file | custom_tgt | custom_idx

Gibt eine Microsoft-Moduldefinitionsdatei zur Steuerung von Symbol-Exporten usw. auf Plattformen an, auf denen dies möglich ist (z. B. Windows).

(Seit 1.3.0) custom_idx wird unterstützt

(seit 0.52.0)

win_subsystem str

Gibt den Subsystemtyp für die Windows-Plattform an. Typische Werte sind console für Textmodusprogramme und windows für GUI-Anwendungen. Der Wert kann auch eine Versionsangabe enthalten, z. B. windows,6.0. Die vollständige Liste finden Sie in der MSDN-Dokumentation.

(seit 0.56.0)

Standard = 'console'


static_library()

Erstellt eine statische Bibliothek mit den gegebenen Quellen.

Signatur

# Builds a static library with the given sources
lib static_library(
  str                                                   target_name,     # The *unique* name of the build target
  str | file | custom_tgt | custom_idx | generated_list source...,       # Input source to compile

  # Keyword arguments:
  <lang>_args                  : list[str]                                                               # compiler flags to use for the given language;
  <lang>_pch                   : str                                                                     # precompiled header file to use for the given language
  build_by_default             : bool                                                                    # Causes, when set to `true`, to have this target be built by default
  build_rpath                  : str                                                                     # A string to add to target's rpath definition in the build dir,
  d_debug                      : list[str]                                                               # The [D version identifiers](https://dlang
  d_import_dirs                : list[inc | str]                                                         # the directories to add to the string search path (i
  d_module_versions            : list[str | int]                                                         # List of module version identifiers set when compiling D sources
  d_unittest                   : bool                                                                    # When set to true, the D modules are compiled in debug mode
  dependencies                 : list[dep]                                                               # one or more dependency objects
  extra_files                  : str | file | custom_tgt | custom_idx                                    # Not used for the build itself but are shown as source files in IDEs
  gnu_symbol_visibility        : str                                                                     # Specifies how symbols should be exported, see
  gui_app                      : bool                                                                    # When set to true flags this target as a GUI application
  implicit_include_directories : bool                                                                    # Controls whether Meson adds the current source and build directories to the include path
  include_directories          : list[inc | str]                                                         # one or more objects created with the include_directories() function,
  install                      : bool                                                                    # When set to true, this executable should be installed
  install_dir                  : str                                                                     # override install directory for this file
  install_mode                 : list[str | int]                                                         # Specify the file mode in symbolic format
  install_rpath                : str                                                                     # A string to set the target's rpath to after install
  install_tag                  : str                                                                     # A string used by the `meson install --tags` command
  link_args                    : list[str]                                                               # Flags to use during linking
  link_depends                 : str | file | custom_tgt | custom_idx                                    # Strings, files, or custom targets the link step depends on
  link_language                : str                                                                     # Makes the linker for this target be for the specified language
  link_whole                   : list[lib | custom_tgt | custom_idx]                                     # Links all contents of the given static libraries whether they are used or
  link_with                    : list[lib | custom_tgt | custom_idx]                                     # One or more shared or static libraries
  name_prefix                  : str | list[void]                                                        # The string that will be used as the prefix for the
  name_suffix                  : str | list[void]                                                        # The string that will be used as the extension for the
  native                       : bool                                                                    # Controls whether the target is compiled for the build or host machines
  objects                      : list[extracted_obj | file | str]                                        # List of object files that should be linked in this target
  override_options             : list[str] | dict[str | bool | int | list[str]]                            # takes an array of strings in the same format as `project`'s `default_options`
  pic                          : bool                                                                    # Builds the library as positional independent code
  prelink                      : bool                                                                    # If `true` the object files in the target will be prelinked,
  rust_abi                     : str                                                                     # Set the specific ABI to compile (when compiling rust)
  rust_crate_type              : str                                                                     # Set the specific type of rust crate to compile (when compiling rust)
  rust_dependency_map          : dict[str]                                                               # On rust targets this provides a map of library names to the crate name
  sources                      : str | file | custom_tgt | custom_idx | generated_list | structured_src  # Additional source files
  vala_args                    : list[str | file]                                                        # Compiler flags for Vala
  win_subsystem                : str                                                                     # Specifies the subsystem type to use
)

Argumente

Die Funktion static_library() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
zielname str

Der *eindeutige* Name des Build-Ziels

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (quelle...) vom Typ str | file | custom_tgt | custom_idx | generated_list.

Eingabequelle zum Kompilieren. Die folgenden Typen werden unterstützt

  • Zeichenketten relativ zum aktuellen Quellverzeichnis
  • file-Objekte, die in früheren Build-Dateien definiert wurden
  • Der Rückgabewert von Konfigurationszeit-Generatoren wie configure_file()
  • Der Rückgabewert von Build-Zeit-Generatoren wie custom_target() oder generator.process()

Diese Eingabedateien können Quellen, Objekte, Bibliotheken oder beliebige andere Dateien sein. Meson kategorisiert sie automatisch anhand der Erweiterung und verwendet sie entsprechend. Zum Beispiel werden Quellen (.c, .cpp, .vala, .rs usw.) kompiliert und Objekte (.o, .obj) und Bibliotheken (.so, .dll usw.) verknüpft.

Mit dem Ninja-Backend erstellt Meson eine Build-Zeit-Abhängigkeit (order-only dependency) für alle generierten Eingabedateien, einschließlich unbekannter Dateien. Dies ist notwendig, um die Generierung der tatsächlichen Abhängigkeiten in der von Ihrem Compiler generierten Depfile zu bootstrappen, um zu bestimmen, wann Quellen neu kompiliert werden müssen. Ninja stützt sich für alle Eingabedateien, generierten und nicht generierten, auf diese Abhängigkeitsdatei. Das Verhalten ist für andere Backends ähnlich.

Schließlich akzeptiert static_library() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
<lang>_args list[str]

Compiler-Flags für die angegebene Sprache; z. B. cpp_args für C++

<lang>_pch str

Vorkompilierte Header-Datei für die angegebene Sprache

build_by_default bool

Wenn auf true gesetzt, wird dieses Ziel standardmäßig erstellt. Das bedeutet, es wird erstellt, wenn meson compile ohne Argumente aufgerufen wird. Der Standardwert ist true für alle Build-Zieltypen.

(seit 0.38.0)

Standard = true

build_rpath str

Eine Zeichenkette, die der RPATH-Definition des Ziels im Build-Verzeichnis hinzugefügt wird, aber bei der Installation entfernt wird

(seit 0.42.0)

d_debug list[str]

Die D-Versions-Identifikatoren, die während der Kompilierung von D-Quelldateien hinzugefügt werden sollen.

d_import_dirs list[inc | str]

Die Verzeichnisse, die zum String-Suchpfad hinzugefügt werden sollen (d. h. der -J-Schalter für DMD). Müssen inc-Objekte oder einfache Zeichenketten sein.

(seit 0.62.0)

d_module_versions list[str | int]

Liste der Modulversions-Identifikatoren, die beim Kompilieren von D-Quellen gesetzt werden.

d_unittest bool

Wenn true gesetzt, werden die D-Module im Debug-Modus kompiliert.

Standard = false

dependencies list[dep]

Ein oder mehrere Abhängigkeitsobjekte, die mit dependency() oder compiler.find_library() (für externe Abhängigkeiten) oder declare_dependency() (für vom Projekt erstellte Abhängigkeiten) erstellt wurden.

extra_files str | file | custom_tgt | custom_idx

Nicht für den Build selbst verwendet, aber in IDEs, die Dateien nach Zielen gruppieren (wie z. B. Visual Studio), als Quelldateien angezeigt.

gnu_symbol_visibility str

Gibt an, wie Symbole exportiert werden sollen, siehe z. B. das GCC-Wiki für weitere Informationen. Dieser Wert kann entweder eine leere Zeichenkette oder einer der Werte default, internal, hidden, protected oder inlineshidden sein, was dasselbe wie hidden ist, aber auch Dinge wie C++ implizite Konstruktoren wie im GCC-Handbuch beschrieben enthält. Ignoriert bei Compilern, die GNU Visibility-Argumente nicht unterstützen.

(seit 0.48.0)

gui_app bool

Wenn true gesetzt, kennzeichnet dieses Ziel als GUI-Anwendung auf Plattformen, wo dies einen Unterschied macht, veraltet seit 0.56.0, verwenden Sie stattdessen win_subsystem.

VERALTET

in 0.56.0

Standard = false

implicit_include_directories bool

Steuert, ob Meson die aktuellen Quell- und Build-Verzeichnisse zum Include-Pfad hinzufügt

(seit 0.42.0)

Standard = true

include_directories list[inc | str]

Ein oder mehrere Objekte, die mit der Funktion include_directories() erstellt wurden, oder (seit 0.50.0) Zeichenketten, die transparent in Include-Verzeichnisobjekte erweitert werden.

installieren bool

Wenn true gesetzt, soll diese ausführbare Datei installiert werden.

Standard = false

install_dir str

Überschreibt das Installationsverzeichnis für diese Datei. Wenn der Wert ein relativer Pfad ist, wird er relativ zur Option prefix betrachtet. Wenn Sie beispielsweise Plugins in einem Unterverzeichnis installieren möchten, würden Sie so etwas verwenden: install_dir : get_option('libdir') / 'projectname-1.0'.

install_mode list[str | int]

Gibt den Dateimodus im symbolischen Format und optional den Besitzer/UID und Gruppe/GID für die installierten Dateien an.

Siehe das Schlüsselwortargument install_mode von install_data() für weitere Informationen.

(seit 0.47.0)

install_rpath str

Eine Zeichenkette, die den RPATH des Ziels nach der Installation setzt (aber *nicht* davor). Unter Windows hat dieses Argument keine Wirkung.

install_tag str

Eine Zeichenkette, die vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge von Dateien zu installieren. Standardmäßig haben alle Build-Ziele den Tag runtime, mit Ausnahme von statischen Bibliotheken, die den Tag devel haben.

(seit 0.60.0)

name_prefix str | list[void]

Die Zeichenkette, die als Präfix für den Ausgabedateinamen des Ziels verwendet wird, indem der Standard überschrieben wird (nur für Bibliotheken verwendet). Standardmäßig ist dies lib auf allen Plattformen und Compilern, außer bei MSVC-Shared-Bibliotheken, wo es zur Konvention weggelassen wird, und Cygwin-Shared-Bibliotheken, wo es cyg ist.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

name_suffix str | list[void]

Die Zeichenkette, die als Erweiterung für das Ziel verwendet wird, indem der Standard überschrieben wird. Standardmäßig ist unter Windows exe für ausführbare Dateien und auf anderen Plattformen wird es weggelassen.

Für dynamische Bibliotheken ist der Standardwert dylib unter macOS, dll unter Windows und so überall sonst. Für statische Bibliotheken ist es überall a. Konventionsgemäß verwenden MSVC-statische Bibliotheken die lib-Erweiterung, aber wir verwenden a, um eine mögliche Namenskollision mit dynamischen Bibliotheken zu vermeiden, die ebenfalls Importbibliotheken mit der Erweiterung lib generieren.

Setzen Sie dies auf [] oder lassen Sie das Schlüsselwortargument für das Standardverhalten weg.

native bool

Steuert, ob das Ziel für die Build- oder Host-Maschine kompiliert wird.

Standard = false

objekte list[extracted_obj | file | str]

Liste der Objektdateien, die in diesem Ziel verknüpft werden sollen.

Seit 1.1.0 kann dies generierte Dateien zusätzlich zu Objektdateien enthalten, für die Sie keine Quelle haben, oder die von anderen Build-Zielen erzeugte Objektdateien. In früheren Versionen mussten generierte Objektdateien in sources platziert werden.

override_options list[str] | dict[str | bool | int | list[str]]

Nimmt ein Array von Zeichenketten im selben Format wie die default_options von project, überschreibt die Werte dieser Optionen nur für dieses Ziel. (seit 1.2.0): Ein Dictionary kann jetzt übergeben werden.

(seit 0.40.0)

pic bool

Erstellt die Bibliothek als positionsunabhängigen Code (damit sie in eine dynamische Bibliothek gelinkt werden kann). Diese Option hat keine Auswirkung unter Windows und OS X, da sie unter Windows nicht sinnvoll ist und PIC unter OS X nicht deaktiviert werden kann.

(seit 0.36.0)

rust_abi str

Setzt die spezifische ABI, die kompiliert werden soll (beim Kompilieren von Rust).

  • 'rust' (Standard): Erstellt eine "rlib"-Crate.

  • 'c': Erstellt eine "staticlib"-Crate.

(seit 1.3.0)

rust_crate_type str

Setzt den spezifischen Typ der zu kompilierenden Rust-Kiste (beim Kompilieren von Rust).

Wenn das Ziel eine executable() ist, ist der Standardwert "bin", der einzige erlaubte Wert.

Wenn es sich um eine static_library() handelt, ist der Standardwert "lib" und kann "lib", "staticlib" oder "rlib" sein. Wenn "lib", wählt Rustc einen Standardwert, "staticlib" bedeutet eine Bibliothek mit C-ABI, "rlib" bedeutet eine Bibliothek mit Rust-ABI.

Wenn es sich um eine shared_library() handelt, ist der Standardwert "lib" und kann "lib", "dylib", "cdylib" oder "proc-macro" sein. Wenn "lib", wählt Rustc einen Standardwert, "cdylib" bedeutet eine Bibliothek mit C-ABI, "dylib" bedeutet eine Bibliothek mit Rust-ABI, und "proc-macro" ist eine spezielle rust-prozedurale Makrokiste.

"proc-macro" ist neu in 0.62.0.

Seit 1.3.0 ist dies veraltet und ersetzt durch das Schlüsselwortargument "rust_abi". proc_macro-Kisten werden jetzt durch die Methode rust.proc_macro() behandelt.

(seit 0.42.0)

VERALTET

in 1.3.0

rust_dependency_map dict[str]

Bei Rust-Zielen bietet dies eine Zuordnung von Bibliotheksnamen zum Kistenamen, unter dem sie im Rust-Code verfügbar wären.

Dies ermöglicht Umbenennungen ähnlich der Abhängigkeitsumbenennungsfunktion von Cargo oder extern crate foo as bar im Rust-Code.

(seit 1.2.0)

sources str | file | custom_tgt | custom_idx | generated_list | structured_src

Zusätzliche Quellcodedateien. Ähnlich wie die Quellcode-Varargs.

vala_args list[str | file]

Compiler-Flags für Vala. Im Gegensatz zu anderen Sprachen können diese Dateien enthalten

win_subsystem str

Gibt den Subsystemtyp für die Windows-Plattform an. Typische Werte sind console für Textmodusprogramme und windows für GUI-Anwendungen. Der Wert kann auch eine Versionsangabe enthalten, z. B. windows,6.0. Die vollständige Liste finden Sie in der MSDN-Dokumentation.

(seit 0.56.0)

Standard = 'console'


structured_sources()

Erstellt ein StructuredSource-Objekt, das opakt ist und als Quelle für jedes build_target (einschließlich static_library, shared_library, executable usw.) übergeben werden kann. Dies ist nützlich für Sprachen wie Rust, die das Dateisystemlayout zur Bestimmung von Importnamen verwenden. Dies ist nur in Rust-Zielen erlaubt und kann nicht mit nicht-strukturierten Eingaben gemischt werden.

Signatur

(seit 0.62.0)

# Create a StructuredSource object, which is opaque and may be passed as a source
structured_src structured_sources(
  list[str | file | custom_tgt | custom_idx | generated_list] root,           # Sources to put at the root of the generated structure
  dict[str | file | custom_tgt | custom_idx | generated_list] [additional],   # Additional sources, where the key is the directory under the root to place
)

Argumente

Die Funktion structured_sources() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
root list[str | file | custom_tgt | custom_idx | generated_list]

Quellen, die im Stammverzeichnis der generierten Struktur platziert werden sollen

additional dict[str | file | custom_tgt | custom_idx | generated_list]

Zusätzliche Quellen, wobei der Schlüssel das Verzeichnis unterhalb des Stamms ist, in dem die Werte platziert werden sollen

[optional]


subdir()

Betritt das angegebene Unterverzeichnis und führt die darin befindliche meson.build-Datei aus. Sobald dies geschehen ist, kehrt die Ausführung zur Zeile nach diesem subdir()-Befehl zurück. Variablen, die in dieser meson.build-Datei definiert sind, stehen dann für spätere Teile der aktuellen Build-Datei und für alle nachfolgenden Build-Dateien, die mit subdir() ausgeführt werden, zur Verfügung.

Beachten Sie, dass jede meson.build-Datei in einem Quellbaum nur einmal ausgeführt werden kann und muss.

Signatur

# Enters the specified subdirectory and executes the `meson
void subdir(
  str dir_name,     # Directory relative to the current `meson

  # Keyword arguments:
  if_found : list[dep]  # Only enter the subdir if all dep.found() methods return `true`.
)

Argumente

Die Funktion subdir() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
dir_name str

Verzeichnis relativ zur aktuellen meson.build, das betreten werden soll.

Darf .. nicht enthalten

Schließlich akzeptiert subdir() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
if_found list[dep]

Betritt das Unterverzeichnis nur, wenn alle dep.found()-Methoden true zurückgeben.

(seit 0.44.0)


subdir_done()

Stoppt die weitere Interpretation der Meson-Skriptdatei ab dem Punkt des Aufrufs. Alle bis zu diesem Punkt ausgeführten Schritte sind gültig und werden von Meson ausgeführt. Das bedeutet, dass alle vor dem Aufruf von subdir_done() definierten Ziele gebaut werden.

Wenn das aktuelle Skript durch subdir aufgerufen wurde, kehrt die Ausführung zum aufrufenden Verzeichnis zurück und fährt fort, als ob das Skript das Ende erreicht hätte. Wenn das aktuelle Skript das Top-Level-Skript ist, konfiguriert Meson das Projekt wie bis zu diesem Punkt definiert.

Signatur

(seit 0.46.0)

void subdir_done()

Beispiel

project('example exit', 'cpp')
executable('exe1', 'exe1.cpp')
subdir_done()
executable('exe2', 'exe2.cpp')

Die ausführbare Datei exe1 wird gebaut, während die ausführbare Datei exe2 nicht gebaut wird.


subproject()

Nimmt das in den positionsgebundenen Argumenten angegebene Projekt und bringt es in die aktuelle Build-Spezifikation, indem es ein subproject-Objekt zurückgibt. Unterprojekte müssen immer im Verzeichnis subprojects im obersten Quellverzeichnis platziert werden. Ein Unterprojekt namens foo muss sich also beispielsweise in ${MESON_SOURCE_ROOT}/subprojects/foo befinden.

  • default_options (seit 0.37.0): ein Array von Standard-Optionswerten, die diejenigen überschreiben, die in der meson.options des Unterprojekts gesetzt sind (wie default_options in project haben sie nur Wirkung, wenn Meson zum ersten Mal ausgeführt wird, und Kommandozeilenargumente überschreiben alle Standardoptionen in Build-Dateien). (seit 0.54.0): Die integrierte Option default_library kann ebenfalls überschrieben werden. (seit 1.2.0): Es kann ein Dictionary anstelle eines Arrays übergeben werden.
  • version: funktioniert genauso wie bei dependency. Sie gibt an, welche Version das Unterprojekt haben soll, z. B. >=1.0.1
  • required (seit 0.48.0): Standardmäßig ist required auf true gesetzt und Meson wird abgebrochen, wenn das Unterprojekt nicht eingerichtet werden konnte. Sie können dies auf false setzen und dann die Methode .found() auf dem subproject-Objekt verwenden. Sie können auch den Wert einer feature-Option übergeben, wie bei dependency().

Beachten Sie, dass Sie das zurückgegebene subproject-Objekt verwenden können, um auf jede Variable im Unterprojekt zuzugreifen. Wenn Sie jedoch ein Abhängigkeitsobjekt aus einem Unterprojekt verwenden möchten, ist ein einfacherer Weg, das Schlüsselwortargument fallback: für dependency() zu verwenden.

Weitere Dokumentation anzeigen.

Signatur

# Takes the project specified in the positional argument and brings that
subproject subproject(
  str subproject_name,     # Name of the subproject

  # Keyword arguments:
  default_options : list[str] | dict[str | bool | int | list[str]]  # An array of default option values
  required        : bool | feature                                # Works just the same as in dependency().
  version         : str                                           # Works just like the same as in dependency().
)

Argumente

Die Funktion subproject() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
subproject_name str

Name des Unterprojekts. Das Unterprojekt muss sich im Verzeichnis subprojects (oder dem in subproject_dir von project() angegebenen Verzeichnis) als Verzeichnis oder Wrapper-Datei befinden.

Schließlich akzeptiert subproject() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
default_options list[str] | dict[str | bool | int | list[str]]

Ein Array von Standard-Optionswerten, die diejenigen überschreiben, die in der meson.options des Unterprojekts gesetzt sind (wie default_options in project(), sie haben nur Wirkung, wenn Meson zum ersten Mal ausgeführt wird, und Kommandozeilenargumente überschreiben alle Standardoptionen in Build-Dateien). (seit 0.54.0): Die integrierte Option default_library kann ebenfalls überschrieben werden. (seit 1.2.0): Es kann nun ein Dictionary übergeben werden.

(seit 0.37.0)

erforderlich bool | feature

Funktioniert genauso wie bei dependency().

(seit 0.48.0)

Standard = true

Version str

Funktioniert genauso wie bei dependency(). Sie gibt an, welche Version das Unterprojekt haben soll, z. B. >=1.0.1.


summary()

Diese Funktion wird verwendet, um die Build-Konfiguration am Ende des Build-Prozesses zusammenzufassen. Diese Funktion bietet Projekten (und Unterprojekten) eine Möglichkeit, diese Informationen klar zu berichten.

Der Inhalt besteht aus einer Reihe von Schlüssel-Wert-Paaren, die in Abschnitte gruppiert sind. Wenn das Schlüsselwortargument section weggelassen wird, werden diese Schlüssel-Wert-Paare implizit in einem Abschnitt ohne Titel gruppiert. Schlüssel-Wert-Paare können optional in einem Dictionary gruppiert werden, aber bedenken Sie, dass Dictionaries keine garantierte Reihenfolge haben. key muss eine Zeichenkette sein, value kann sein

  • eine Ganzzahl, ein Boolean oder eine Zeichenkette
  • seit 0.57.0 ein externes Programm oder eine Abhängigkeit
  • seit 0.58.0 eine Feature-Option
  • eine Liste davon.

Anstatt summary als summary(key, value) aufzurufen, ist es auch möglich, direkt ein Dictionary an die Funktion summary() zu übergeben, wie im folgenden Beispiel zu sehen ist.

summary() kann mehrmals aufgerufen werden, solange das gleiche Abschnitt/Schlüssel-Paar nicht zweimal vorkommt. Alle Abschnitte werden gesammelt und am Ende der Konfiguration in der gleichen Reihenfolge, in der sie aufgerufen wurden, ausgegeben.

Signatur

(seit 0.53.0)

# This function is used to summarize build configuration at the end of the build
void summary(
  str | dict[str | bool | int | dep | external_program | list[str | bool | int | dep | external_program]] key_or_dict,     # The name of the new entry, or a dict containing multiple entries
  str | bool | int | dep | external_program | list[str | bool | int | dep | external_program]           [value],         # The value to print for the `key`

  # Keyword arguments:
  bool_yn  : bool  # Convert bool values to yes and no
  list_sep : str   # The separator to use when printing list values in this summary
  section  : str   # The section to put this summary information under
)

Beispiel

Beispiel meson.build

project('My Project', version : '1.0')
summary({'bindir': get_option('bindir'),
        'libdir': get_option('libdir'),
        'datadir': get_option('datadir'),
        }, section: 'Directories')
summary({'Some boolean': false,
        'Another boolean': true,
        'Some string': 'Hello World',
        'A list': ['string', 1, true],
        }, section: 'Configuration')

Ausgabe

My Project 1.0

  Directories
    prefix         : /opt/gnome
    bindir         : bin
    libdir         : lib/x86_64-linux-gnu
    datadir        : share

  Configuration
    Some boolean   : False
    Another boolean: True
    Some string    : Hello World
    A list         : string
                     1
                     True

Argumente

Die Argumentabflachung wird von dieser Funktion NICHT UNTERSTÜTZT.

Die Funktion summary() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
key_or_dict str | dict[str | bool | int | dep | external_program | list[str | bool | int | dep | external_program]]

Der Name des neuen Eintrags oder ein Dictionary, das mehrere Einträge enthält. Wenn ein Dictionary übergeben wird, entspricht dies dem einmaligen Aufruf von summary() für jedes Schlüssel-Wert-Paar. Beachten Sie, dass Dictionaries keine Reihenfolge garantieren.

value str | bool | int | dep | external_program | list[str | bool | int | dep | external_program]

Der Wert, der für den key ausgegeben werden soll. Nur gültig, wenn key_or_dict eine Zeichenkette ist.

[optional]

Schließlich akzeptiert summary() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
bool_yn bool

Konvertiert Boolesche Werte in Ja und Nein

Standard = false

list_sep str

Der Trenner, der beim Ausgeben von Listenwerten in dieser Zusammenfassung verwendet werden soll. Wenn kein Trenner angegeben wird, wird jedes Listenelement auf einer eigenen Zeile ausgegeben.

(seit 0.54.0)

section str

Der Abschnitt, unter dem diese Zusammenfassungsinformationen platziert werden sollen. Wenn das Schlüsselwortargument section weggelassen wird, werden Schlüssel/Wert-Paare implizit in einem Abschnitt ohne Titel gruppiert.


test()

Definiert einen Test, der mit dem Test-Framework ausgeführt werden soll. Nimmt zwei positionsgebundene Argumente entgegen: das erste ist der Name des Tests und das zweite die auszuführende ausführbare Datei. Die ausführbare Datei kann ein exe-Objekt sein, das von executable() zurückgegeben wird, oder ein external_program-Objekt], das von find_program() zurückgegeben wird.

(seit 0.55.0) Beim Cross-Compiling wird, wenn ein exe_wrapper benötigt und definiert ist, die Umgebungsvariable MESON_EXE_WRAPPER auf den Zeichenkettenwert dieses Wrappers gesetzt (Implementierungsdetail: Verwendung von mesonlib.join_args). Testskripte können dies verwenden, um Cross-Compilierungs-Binärdateien auszuführen. Wenn Ihr Test MESON_EXE_WRAPPER in Cross-Compile-Situationen benötigt, sind Sie dafür verantwortlich, den Rückgabecode 77 zurückzugeben, um dem Harness zu melden, dass er überspringen soll.

Standardmäßig wird die Umgebungsvariable MALLOC_PERTURB_ automatisch von meson test auf einen zufälligen Wert zwischen 1 und 255 gesetzt. Dies kann helfen, Speicherlecks in Konfigurationen zu finden, die glibc verwenden, auch mit Nicht-GCC-Compilern. Dies kann jedoch die Leistung beeinträchtigen und einen Test aufgrund externer Bibliotheken fehlschlagen lassen, deren Interna außerhalb der Kontrolle des Benutzers liegen. Um zu überprüfen, ob diese Funktion einen erwarteten Laufzeitabsturz verursacht, deaktivieren Sie die Funktion, indem Sie vorübergehend die Umgebungsvariable MALLOC_PERTURB_=0 setzen. Während es vorzuziehen ist, diese Überprüfung nur vorübergehend zu deaktivieren, wenn ein Projekt eine dauerhafte Deaktivierung dieser Überprüfung in meson.build erfordert, tun Sie Folgendes:

nomalloc = environment({'MALLOC_PERTURB_': '0'})

test(..., env: nomalloc, ...)

Standardmäßig werden die Umgebungsvariablen ASAN_OPTIONS, UBSAN_OPTIONS und MSAN_OPTIONS so gesetzt, dass bei erkannten Verletzungen ein Abbruch erfolgt und eine Rückverfolgung erfolgt. Um dies zu unterdrücken, können ASAN_OPTIONS, UBSAN_OPTIONS oder MSAN_OPTIONS in der Umgebung gesetzt werden.

Zusätzlich zur Ausführung einzelner ausführbarer Dateien als Testfälle kann test() auch verwendet werden, um ein externes Test-Framework aufzurufen. In diesem Fall ist es am besten, verbose: true (seit 0.62.0) und, falls vom externen Framework unterstützt, protocol: 'tap' (seit 0.50.0) zu verwenden. Dadurch wird sichergestellt, dass Meson jeden Subtest beim Ausführen protokolliert, anstatt das gesamte Protokoll am Ende der Ausführung einzufügen.

Definierte Tests können auf eine Backend-unabhängige Weise ausgeführt werden, indem meson test im Build-Verzeichnis aufgerufen wird, oder durch die Verwendung von Backend-spezifischen Befehlen wie ninja test oder msbuild RUN_TESTS.vcxproj.

Signatur

# Defines a test to run with the test harness
void test(
  str                                                           name,           # The *unique* test id
  exe | jar | external_program | file | custom_tgt | custom_idx executable,     # The program to execute

  # Keyword arguments:
  args        : list[str | file | tgt | external_program]  # Arguments to pass to the executable
  depends     : list[build_tgt | custom_tgt]               # specifies that this test depends on the specified
  env         : env | list[str] | dict[str]                # environment variables to set, such as `['NAME1=value1',
  is_parallel : bool                                       # when false, specifies that no other test must be
  priority    : int                                        # specifies the priority of a test
  protocol    : str                                        # specifies how the test results are parsed and can
  should_fail : bool                                       # when true the test is considered passed if the
  suite       : str | list[str]                            # `'label'` (or list of labels `['label1', 'label2']`)
  timeout     : int                                        # the amount of seconds the test is allowed to run, a test
  verbose     : bool                                       # if true, forces the test results to be logged as if `--verbose` was passed
  workdir     : str                                        # absolute path that will be used as the working directory
)

Argumente

Die Funktion test() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
name str

Die *eindeutige* Test-ID

ausführbare Datei exe | jar | external_program | file | custom_tgt | custom_idx

Das auszuführende Programm. (Seit 1.4.0) Ein benutzerdefiniertes Ziel wird ebenfalls akzeptiert.

Schließlich akzeptiert test() die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
args list[str | file | tgt | external_program]

Argumente, die an die ausführbare Datei übergeben werden sollen

abhängig list[build_tgt | custom_tgt]

gibt an, dass dieser Test von den angegebenen Zielen abhängt, obwohl er keines davon als Befehlszeilenargument nimmt. Dies ist für Fälle gedacht, in denen der Test diese Ziele intern findet, z. B. Plugins oder Globbing. Diese Ziele werden erstellt, bevor der Test ausgeführt wird, auch wenn sie build_by_default : false haben.

(seit 0.46.0)

env env | list[str] | dict[str]

Umgebungsvariablen, die gesetzt werden sollen, wie z. B. ['NAME1=value1', 'NAME2=value2'], oder ein env-Objekt, das eine ausgefeiltere Umgebungsverwaltung ermöglicht. (Seit 0.52.0) Ein Dictionary wird ebenfalls akzeptiert.

is_parallel bool

Wenn false, gibt an, dass kein anderer Test gleichzeitig mit diesem Test laufen darf

Standard = true

Priorität int

gibt die Priorität eines Tests an. Tests mit höherer Priorität werden *gestartet* vor Tests mit niedrigerer Priorität. Die Startreihenfolge von Tests mit identischen Prioritäten ist Implementierungs-abhängig. Die Standardpriorität ist 0, negative Zahlen sind zulässig.

(seit 0.52.0)

Standard = 0

Protokoll str

gibt an, wie die Testergebnisse analysiert werden und kann einer von exitcode, tap oder gtest sein. Weitere Informationen zum Test-Harness-Protokoll finden Sie unter Unit Tests. Die folgenden Werte werden akzeptiert

  • exitcode: Der Exit-Code des ausführbaren Programms wird vom Test-Harness verwendet, um das Ergebnis des Tests aufzuzeichnen).

  • tap: Test Anything Protocol.

  • gtest (seit 0.55.0): für Google Tests.

  • rust (seit 0.56.0): für native Rust-Tests

(seit 0.50.0)

Standard = 'exitcode'

sollte_fehlen bool

Wenn true, gilt der Test als erfolgreich, wenn das ausführbare Programm einen Rückgabewert ungleich Null zurückgibt (d. h. einen Fehler meldet)

Standard = false

Suite str | list[str]

'label' (oder Liste von Labels ['label1', 'label2']), die diesem Test zugeordnet sind. Der Suitenamen wird durch einen (Unter-)Projektnamen qualifiziert, was zu (sub)project_name:label führt. Bei einer Liste von Zeichenketten sind die Suitenamen (sub)project_name:label1, (sub)project_name:label2 usw.

Timeout int

Die Anzahl der Sekunden, die der Test laufen darf. Ein Test, der seine Zeitgrenze überschreitet, gilt immer als fehlgeschlagen. Standardmäßig 30 Sekunden. Seit 0.57, wenn timeout <= 0 ist, hat der Test eine unendliche Dauer. In früheren Versionen von Meson schlug der Test sofort mit einem Timeout fehl.

Standard = 30

ausführlich bool

Wenn true, werden die Testergebnisse zwangsweise protokolliert, als ob --verbose an meson test übergeben wurde.

(seit 0.62.0)

Standard = false

Arbeitsverzeichnis str

Absoluter Pfad, der als Arbeitsverzeichnis für den Test verwendet wird


unset_variable()

Entfernt eine Variable. Der Verweis auf eine Variable, die entfernt wurde, ist ein Fehler, bis sie wieder gesetzt wurde.

Signatur

(seit 0.60.0)

# Unsets a variable
void unset_variable(
  str varname,     # The variable to unset
)

Argumente

Die Funktion unset_variable() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
varname str

Die zu entfernende Variable.


vcs_tag()

Dieser Befehl erkennt die Versionskontroll-Commit-Informationen zur Build-Zeit und platziert sie in der angegebenen Ausgabedatei. Diese Datei ist bei jedem Build garantiert aktuell. Schlüsselwörter sind ähnlich wie bei custom_target().

Meson liest den Inhalt von input, ersetzt den replace_string mit der erkannten Revisionsnummer und schreibt das Ergebnis nach output. Diese Methode gibt ein custom_tgt-Objekt zurück, das (wie üblich) verwendet werden sollte, um Abhängigkeiten zu signalisieren, wenn andere Ziele die von diesem ausgegebene Datei verwenden.

Wenn Sie beispielsweise eine Header-Datei damit generieren und diese in einem Build-Ziel verwenden möchten, müssen Sie den Rückgabewert zu den Quellen dieses Build-Ziels hinzufügen. Ohne dies weiß Meson nicht, in welcher Reihenfolge die Ziele gebaut werden sollen.

Wenn Sie ein spezifischeres Verhalten als das, was dieser Befehl bietet, wünschen, sollten Sie custom_target() verwenden.

Signatur

# This command detects revision control commit information at build time
custom_tgt vcs_tag(
  command        : list[exe | external_program | custom_tgt | file | str]              # The command to execute, see custom_target() for details
  fallback       : str                                                                 # Version number to use when no revision control information is present,
  input          : str                                                     [required]  # File to modify (e
  output         : str                                                     [required]  # File to write the results to (e
  replace_string : str                                                                 # String in the input file to substitute with the commit information
)

Argumente

Die Funktion vcs_tag() akzeptiert die folgenden Schlüsselwortargumente

Name Typ Beschreibung Schlagwörter
command list[exe | external_program | custom_tgt | file | str]

Der auszuführende Befehl, siehe custom_target() für Details, wie dieser Befehl spezifiziert werden muss.

Dieser Parameter ist optional. Wenn er fehlt, versucht Meson sein Bestes, einen geeigneten Standardbefehl zu finden.

(seit 0.62.0) file wird akzeptiert.

(seit 0.63.0) custom_tgt, exe und external_program werden akzeptiert.

fallback str

Versionsnummer, die verwendet werden soll, wenn keine Versionskontrollinformationen vorhanden sind, z. B. beim Erstellen aus einem Release-Tarball.

input str

Datei, die geändert werden soll (z. B. version.c.in).

output str

Datei, in die die Ergebnisse geschrieben werden sollen (z. B. version.c).

replace_string str

Zeichenkette in der Eingabedatei, die durch die Commit-Informationen ersetzt werden soll.

default = '@VCS_TAG@'


warning()

Diese Funktion gibt ihr Argument mit dem Präfix WARNING: auf stdout aus.

Signatur

(seit 0.44.0)

# This function prints its argument to stdout prefixed with WARNING:
void warning(
  str | int | bool | list[str | int | bool] | dict[str | int | bool] text,          # The message to print
  str | int | bool | list[str | int | bool] | dict[str | int | bool] more_text...,  # Additional text that will be printed separated by spaces
)

Argumente

Die Argumentabflachung wird von dieser Funktion NICHT UNTERSTÜTZT.

Die Funktion warning() akzeptiert die folgenden positionsgebundenen Argumente

Name Typ Beschreibung Schlagwörter
text str | int | bool | list[str | int | bool] | dict[str | int | bool]

Die auszugebende Nachricht.

Zusätzlich akzeptiert die Funktion zwischen 0 und unendlich variable Argumente (more_text...) vom Typ str | int | bool | list[str | int | bool] | dict[str | int | bool].

Zusätzlicher Text, der durch Leerzeichen getrennt ausgegeben wird.

(seit 0.54.0)


Die Ergebnisse der Suche sind