Standard-Build-Optionen

Meson bietet viele integrierte Optionen, um zu steuern, wie das Projekt erstellt und installiert wird. In den allermeisten Fällen haben diese gute Standardwerte. Es gibt jedoch einige Optionen, die von meson-python mit eigenen Standardwerten überschrieben werden, um den Build-Prozess an die Aufgabe des Erstellens von Python-Wheels anzupassen.

Die von meson-python festgelegten Standardoptionen werden durch paketspezifische Optionen in pyproject.toml und durch vom Benutzer zur Build-Zeit über das Python-Build-Frontend bereitgestellte Optionen überschrieben. Weitere Informationen finden Sie im Leitfaden Argumente an Meson übergeben.

Die Optionen, die zum Erstellen des Projekts verwendet werden, sind im Abschnitt Vom Benutzer definierte Optionen der Ausgabe der Stufe meson setup des Builds zusammengefasst, z. B. bei der Ausführung von python -m build -w. Dies sieht etwa so aus:

User defined options
  Native files: $builddir/meson-python-native-file.ini
  buildtype   : release
  b_ndebug    : if-release
  b_vscrt     : md

wobei der Pfad zum Build-Verzeichnis zur besseren Übersichtlichkeit durch $builddir ersetzt wurde.

Die Optionen, die meson-python standardmäßig angibt, sind:

native-file=$builddir/meson-python-native-file.ini

meson-python verwendet eine native Datei, um Meson auf den python-Interpreter hinzuweisen, der für den Build erforderlich ist. Dies ist der Python-Interpreter, der zum Ausführen des Python-Build-Frontends verwendet wird. Meson würde ansonsten den ersten Python-Interpreter im $PATH suchen, der möglicherweise nicht derselbe ist.

Zusätzliche --native-file Optionen können an meson setup übergeben werden, wenn weitere Anpassungen der nativen Umgebung vorgenommen werden müssen. Meson wird die Inhalte aller Maschinen-Dateien zusammenführen. Um sicherzustellen, dass alles wie erwartet funktioniert, steht die native Datei von meson-python zuletzt auf der Kommandozeile und überschreibt den im vom Benutzer bereitgestellten nativen Dateien angegebenen python-Binärpfad.

buildtype=release

Die Meson-Standardeinstellung ist die Erstellung eines Debug-Builds mit Binärdateien, die mit Debug-Symbolen kompiliert wurden, und, bei der Kompilierung mit MSVC, die Verknüpfung mit der Visual Studio Debug Runtime, siehe unten. Der Hauptzweck von meson-python ist die Erstellung von Release-Artefakten, daher wird ein besser geeigneter Build-Typ ausgewählt. Ein Release-Build wird ohne Debug-Symbole und mit Compiler-Optimierungen kompiliert. Weitere Informationen finden Sie in der Meson-Dokumentation.

b_ndebug=if-release

Aus Gründen der Abwärtskompatibilität deaktiviert Meson für Release-Builds keine Assertionen. Für die meisten Benutzer ist dies ein überraschendes und unerwünschtes Verhalten. Diese Option weist Meson an, die Option -DNDEBUG an die Compiler zu übergeben, es sei denn, der Build-Typ ist anders als Release eingestellt.

b_vscrt=md

Mit den Standardoptionen weist Meson bei der Kompilierung eines Debug-Builds den MSVC-Compiler an, die Debug-Version der Visual Studio Runtime-Bibliothek zu verwenden. Dies veranlasst den MSVC-Linker, nach der Debug-Version aller verknüpften DLLs zu suchen. Die Python-Distribution für Windows enthält keine Debug-Version der Python-DLL und die Verknüpfung schlägt fehl. Diese Verknüpfungsfehler sind überraschend und schwer zu diagnostizieren. Um dieses Problem zu vermeiden, wenn Benutzer explizit einen Debug-Build anfordern, setzt meson-python diese Option, um Meson anzuweisen, mit der Release-Version der Visual Studio Runtime zu kompilieren. Weitere Informationen finden Sie in der Meson-Dokumentation und in der Visual Studio-Dokumentation. Diese Option wird ignoriert, wenn andere Compiler verwendet werden.