Argumente an Meson übergeben¶
meson-python ruft die Befehle meson setup, ninja und meson install auf, um die Dateien zu kompilieren, die in das Python-Wheel aufgenommen werden, und meson dist, um die Dateien zu sammeln, die in die Python-sdist aufgenommen werden. Argumente können an diese Befehle übergeben werden, um ihr Verhalten zu ändern. Einzelheiten finden Sie in der Meson-Dokumentation und in der Ninja-Dokumentation.
Befehlszeilenargumente für meson und ninja können über werkzeugspezifische Einstellungen in pyproject.toml als Zeichenkettenlisten für die Schlüssel setup, compile, install und dist in der Tabelle tool.meson-python.args angegeben werden. Zum Beispiel
[tool.meson-python.args]
setup = ['-Doption=false', '-Dfeature=enabled', '-Dvalue=42']
compile = ['-j4']
install = ['--tags=bindings']
dist = ['--include-subprojects']
Oder können über Konfigurationseinstellungen, die vom Python-Build-Frontend übergeben werden, als setup-args, compile-args, install-args und dist-args Konfigurationseinstellungen angegeben werden. Über das Python-Build-Frontend übermittelte Konfigurationseinstellungen haben Vorrang vor den in pyproject.toml angegebenen und können diese überschreiben.
meson-python überschreibt einige der Standard-Meson-Optionen mit Einstellungen, die besser für die Erstellung eines Python-Wheels geeignet sind. Benutzereinstellungen, die über pyproject.toml oder über Konfigurationseinstellungen des Python-Build-Frontends angegeben werden, überschreiben die meson-python-Standardwerte.
Beim Kompilieren unter Windows ruft meson-python den Befehl ninja über die Wrapper meson compile auf. Wenn die GCC- oder LLVM-Compiler nicht im $PATH gefunden werden, wird die Visual-Studio-Umgebung aktiviert und ninja kann die MSVC-Compiler verwenden. Um die Visual-Studio-Umgebung bedingungslos zu aktivieren, übergeben Sie die Option --vsenv an meson setup, siehe dieses Beispiel. Bei Verwendung des meson compile-Wrappers werden die vom Benutzer bereitgestellten Optionen für den Kompilierungsbefehl über die Option --ninja-args übergeben. Dies stellt sicher, dass das Verhalten unabhängig davon ist, wie der Build gestartet wird. Weitere Einzelheiten finden Sie in der Meson-Dokumentation.
Beispiele¶
Standardbibliotheken auf statisch setzen¶
Setzt den Standardbibliothekstyp beim Erstellen eines binären Wheels auf statisch.
Um diese Option dauerhaft in der pyproject.toml des Projekts einzustellen
[tool.meson-python.args]
setup = ['--default-library=static']
Um diese Option zur Build-Zeit vorübergehend einzustellen
$ python -m build -Csetup-args="--default-library=static" .
$ python -m pip wheel --config-settings=setup-args="--default-library=static" .
Build-Ziele auswählen, die in das Wheel aufgenommen werden sollen¶
Es ist möglich, nur eine Teilmenge der installierbaren Dateien mithilfe von Meson Installations-Tags über die Befehlszeilenoption --tags von meson install in das Python-Wheel aufzunehmen. Wenn --tags angegeben ist, werden nur Dateien installiert, die eines der angegebenen Tags haben.
Meson setzt vordefinierte Tags für einige Dateien. Benutzerdefinierte Installationstags können mit dem Schlüsselwortargument install_tag, das an die Zieldefinitionsfunktion übergeben wird, gesetzt werden. In diesem Beispiel werden nur Ziele mit den Tags runtime oder python-runtime in das Python-Wheel aufgenommen.
Um diese Option dauerhaft in der pyproject.toml des Projekts einzustellen
[tool.meson-python.args]
install = ['--tags=runtime,python-runtime']
Um diese Option zur Build-Zeit vorübergehend einzustellen
$ python -m build -Cinstall-args="--tags=runtime,python-runtime" .
$ python -m pip wheel --config-settings=install-args="--tags=runtime,python-runtime" .
Build-Optimierungsgrad festlegen¶
Der Standard-Optimierungsgrad beim Erstellen eines binären Wheels ist derzeit auf 2 gesetzt. Dies kann durch Übergabe des Arguments -Doptimization an den Befehl meson setup überschrieben werden.
Um diese Option dauerhaft in der pyproject.toml des Projekts einzustellen
[tool.meson-python.args]
setup = ['-Doptimization=3']
Um diese Option zur Build-Zeit vorübergehend einzustellen
$ python -m build -Csetup-args="-Doptimization=3" .
$ python -m pip wheel --config-settings=setup-args="-Doptimization=3" .
Erzwingen der Verwendung von MSVC-Compilern unter Windows¶
Die MSVC-Compiler sind nicht im $PATH installiert. Die Visual-Studio-Umgebung muss aktiviert werden, damit ninja diese Compiler verwenden kann. Dies wird von meson compile übernommen, aber nur, wenn die GCC-Compiler oder die LLVM-Compiler nicht im $PATH gefunden werden. Die Übergabe der Option --vsenv an meson setup erzwingt die Aktivierung der Visual-Studio-Umgebung und generiert einen Fehler, wenn die Aktivierung fehlschlägt.
Diese Option hat auf anderen Plattformen keine Auswirkung. Wenn Ihr Projekt also mit MSVC kompiliert werden muss, können Sie diese Option dauerhaft in der pyproject.toml des Projekts festlegen.
[tool.meson-python.args]
setup = ['--vsenv']
Um diese Option zur Build-Zeit vorübergehend einzustellen
$ python -m build -Csetup-args="--vsenv" .
$ python -m pip wheel --config-settings=setup-args="--vsenv" .