Die Version 1.12.0 des Build-Systems Meson wurde veröffentlicht, das für den Aufbau von Projekten wie X.Org Server, Mesa, QEMU, Lighttpd, systemd, GStreamer, Wayland, GNOME und GTK verwendet wird. Der Code von Meson ist in Python geschrieben und wird unter der Apache 2.0-Lizenz bereitgestellt.
Ein zentrales Ziel der Entwicklung von Meson ist es, einen schnellen Build-Prozess zu gewährleisten, kombiniert mit Benutzerfreundlichkeit und Einfachheit. Anstelle des Tools make wird standardmäßig das Ninja-Tooling verwendet, jedoch können auch andere Backends wie Xcode und Visual Studio eingesetzt werden. Das System enthält einen plattformübergreifenden Abhängigkeitsmanager, der es ermöglicht, Meson zur Erstellung von Paketen für verschiedene Distributionen zu verwenden. Die Build-Regeln werden in einer vereinfachten, domänenspezifischen Sprache festgelegt, die eine gute Lesbarkeit aufweist und für den Benutzer verständlich ist (die Autoren beabsichtigen, dass Entwickler möglichst wenig Zeit mit dem Schreiben von Regeln verbringen).
Es wird Cross-Compilation und Build unter Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS und Windows mit GCC, Clang, Visual Studio und anderen Compilern unterstützt. Projekte in verschiedenen Programmiersprachen, einschließlich C, C++, Fortran, Java, D und Rust, können gebaut werden. Ein inkrementeller Build-Modus wird unterstützt, bei dem nur die Komponenten neu gebaut werden, die direkt mit den seit dem letzten Build vorgenommenen Änderungen verbunden sind. Meson kann zur Erstellung reproduzierbarer Builds verwendet werden, bei denen das Ausführen des Builds in verschiedenen Umgebungen zu identischen ausführbaren Dateien führt.
Hauptneuerungen in Meson 1.12:
- Unterstützung für die Datei CACHEDIR.TAG, die im Build-Verzeichnis abgelegt wird, um die Einbeziehung temporärer Dateien in Backups zu vermeiden, wurde hinzugefügt.
- Ein neues Build-Ziel clippy-json wurde hinzugefügt, das den Clippy-Linter ausführt und Informationen über Warnungen und Fehler im JSON-Format für Rust-analyzer bereitstellt.
- Ein Objekt und eine Funktion default() wurden hinzugefügt, die dazu dienen, benannte Argumente auf Standardwerte zurückzusetzen.
- Der Methode generator.process() wurde ein Argument 'depends' hinzugefügt, um generierte Dateien direkt mit anderen Build-Zielen zu verknüpfen.
- Der Klasse 'include_directories' wurde die Methode to_list() hinzugefügt, um eine Liste absoluter Pfade der eingebundenen Verzeichnisse auszugeben.
- Funktionen zur Umwandlung von Strings in Ganzzahlen und umgekehrt — str.to_int() und int.to_string() — wurden hinzugefügt.
- Der Befehl 'meson format' hat eine Option '--subprojects' erhalten, die zusammen mit '--recursive' verwendet wird, um Unterprojekte bei der rekursiven Analyse abzudecken.
- Unterstützung für die Plattformen OpenHarmony und HarmonyOS (OHOS), die als Android behandelt werden, wurde hinzugefügt.
- Bei der Definition eigener Build-Ziele und Tests ist es jetzt erlaubt, externe Programme in den benannten Argumenten 'input' und 'depends' anzugeben.
- Die Möglichkeit zur getrennten Erstellung von Unterprojekten für den Build-Computer und die Zielplattform wurde durch die Angabe des benannten Arguments 'native' in subproject() und meson.override_find_program() hinzugefügt.
- Der Befehl 'meson test' hat die Option '--exclude' erhalten, um einzelne Tests zu überspringen.
- Die Unterstützung für Python 3.7, 3.8 und 3.9 wurde eingestellt.
Quelle: opennet.ru
