Meson Build System Version 1.0

Die Veröffentlichung des Build-Systems Meson 1.0.0 wurde veröffentlicht, mit dem Projekte wie X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME und GTK erstellt werden. Der Meson-Code ist in Python geschrieben und steht unter der Apache 2.0-Lizenz.

Das wichtigste Entwicklungsziel von Meson ist die Bereitstellung eines Hochgeschwindigkeitsmontageprozesses in Kombination mit Komfort und Benutzerfreundlichkeit. Anstelle von make verwendet der Build standardmäßig das Ninja-Toolkit, es können aber auch andere Backends wie xcode und VisualStudio verwendet werden. Das System verfügt über einen integrierten Multiplattform-Abhängigkeitshandler, der es Ihnen ermöglicht, Meson zum Erstellen von Paketen für Distributionen zu verwenden. Assemblerregeln werden in einer vereinfachten domänenspezifischen Sprache festgelegt, sie sind für den Benutzer gut lesbar und verständlich (nach der Idee der Autoren sollte der Entwickler möglichst wenig Zeit mit dem Schreiben von Regeln verbringen).

Cross-Kompilierung und Erstellung auf Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS und Windows mit GCC, Clang, Visual Studio und anderen Compilern wird unterstützt. Es ist möglich, Projekte in verschiedenen Programmiersprachen zu erstellen, darunter C, C++, Fortran, Java und Rust. Es wird ein inkrementeller Build-Modus unterstützt, bei dem nur Komponenten neu erstellt werden, die in direktem Zusammenhang mit Änderungen stehen, die seit dem letzten Build vorgenommen wurden. Meson kann zum Generieren wiederholbarer Builds verwendet werden, wobei die Ausführung des Builds in verschiedenen Umgebungen dazu führt, dass völlig identische ausführbare Dateien generiert werden.

Wichtigste Neuerungen von Meson 1.0:

  • Das Modul zum Erstellen von Projekten in der Rust-Sprache wurde für stabil erklärt. Dieses Modul wird im Mesa-Projekt verwendet, um in Rust geschriebene Komponenten zu erstellen.
  • Die Präfixoption wird von den meisten Compiler-Prüffunktionen unterstützt und implementiert die Möglichkeit, andere Arrays als Zeichenfolgen zu verarbeiten. Jetzt können Sie beispielsweise Folgendes angeben: cc.check_header('GL/wglew.h', prefix : ['#include ', '#enthalten '])
  • Es wurde ein neues Argument „--workdir“ hinzugefügt, mit dem Sie das Arbeitsverzeichnis überschreiben können. Um beispielsweise das aktuelle Verzeichnis anstelle des Arbeitsverzeichnisses zu verwenden, können Sie Folgendes ausführen: meson devenv -C builddir --workdir .
  • Zur Bestimmung des Vorkommens eines Teilstrings in einem String werden neue Operatoren „in“ und „not in“ vorgeschlagen, ähnlich der bisher verfügbaren Prüfung des Vorkommens eines Elements in einem Array oder Wörterbuch. Zum Beispiel: fs = import('fs') if 'something' in fs.read('somefile') # True endif
  • Option „warning-level=everything“ hinzugefügt, um die Ausgabe aller verfügbaren Compiler-Warnungen zu aktivieren (in Clang und MSVC werden -Weverything und /Wall verwendet, und in GCC sind separate Warnungen enthalten, die in etwa dem -Weverything-Modus in Clang entsprechen).
  • Die Methode rust.bindgen implementiert die Möglichkeit, das Argument „dependencies“ zu verarbeiten, um Pfade zu Abhängigkeiten zu übergeben, die vom Compiler verarbeitet werden sollen.
  • Die Funktion java.generate_native_headers wurde veraltet und in java.native_headers umbenannt, um dem allgemeinen Benennungsstil von Meson zu entsprechen.

Source: opennet.ru

Kommentar hinzufügen