Meson Build System Version 0.52

Veröffentlicht Build-System-Release Tabelle 0.52, das zum Erstellen von Projekten wie X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME und GTK+ verwendet wird. Der Meson-Code ist in Python geschrieben und geliefert lizenziert unter Apache 2.0.

Das Hauptziel der Meson-Entwicklung besteht darin, eine hohe Geschwindigkeit des Montageprozesses bei gleichzeitiger Bequemlichkeit und Benutzerfreundlichkeit zu gewährleisten. Anstelle des Make-Dienstprogramms verwendet der Standard-Build das Toolkit Ninja, es ist aber auch möglich, andere Backends wie xcode und VisualStudio zu verwenden. 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 spezifiziert, sind für den Benutzer gut lesbar und verständlich (wie von den Autoren beabsichtigt, sollte der Entwickler möglichst wenig Zeit mit dem Schreiben von Regeln verbringen).

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

Haupt- Innovationen Meson 0.52:

  • Experimentelle Unterstützung für Webassembly mit Emscripten als Compiler hinzugefügt;
  • Die Unterstützung für die Illumos- und Solaris-Plattformen wurde deutlich verbessert und auf einen funktionsfähigen Zustand gebracht;
  • Stellt sicher, dass gettext-basierte Internationalisierungsskripte ignoriert werden, wenn auf dem System das gettext-Toolkit nicht installiert ist (zuvor wurde bei Verwendung des i18n-Moduls auf Systemen ohne gettext ein Fehler angezeigt);
  • Verbesserte Unterstützung für statische Bibliotheken. Viele Probleme bei der Verwendung deinstallierter statischer Bibliotheken wurden behoben;
  • Es wurde die Möglichkeit hinzugefügt, Wörterbücher zum Zuweisen von Umgebungsvariablen zu verwenden. Beim Aufruf von Environment() kann nun das erste Element als Wörterbuch angegeben werden, in dem Umgebungsvariablen in Schlüssel/Wert-Form definiert werden. Diese Variablen werden an Environment_object übertragen, als wären sie einzeln über die Methode set() festgelegt worden. Wörterbücher können jetzt auch an verschiedene Funktionen übergeben werden, die ein „env“-Argument unterstützen;
  • Funktion „runtarget alias_target(target_name, dep1, ...)“ hinzugefügt, die ein neues Build-Ziel der ersten Ebene erstellt, das mit dem ausgewählten Build-Backend aufgerufen werden kann (z. B. „ninja target_name“). Dieses Build-Ziel führt keine Befehle aus, stellt aber sicher, dass alle Abhängigkeiten erstellt werden.
  • Automatische Einstellung der Umgebungsvariablen PKG_CONFIG_SYSROOT_DIR während der Kreuzkompilierung aktiviert, wenn im Abschnitt „[properties]“ eine sys_root-Einstellung vorhanden ist;
  • Option „--gdb-path“ hinzugefügt, um den Pfad zum GDB-Debugger zu bestimmen, wenn die Option „--gdb testname“ angegeben wird, um GDB mit dem angegebenen Testskript auszuführen;
  • Automatische Erkennung des Clang-Tidy-Build-Ziels hinzugefügt, um diesen Linter mit allen Quelldateien auszuführen. Das Ziel wird erstellt, wenn clang-tidy im System verfügbar ist und die Datei „.clang-tidy“ (oder „_clang-tidy“) im Projektstamm definiert ist;
  • Abhängigkeit('Blöcke') zur Verwendung in der Clang-Erweiterung hinzugefügt Blockiert;
  • Die Linker- und Compiler-Ansichten sind getrennt, sodass unterschiedliche Kombinationen von Compilern und Linkern verwendet werden können.
  • All_dependencies()-Methode zu SourceSet-Objekten zusätzlich zur all_sources()-Methode hinzugefügt;
  • In run_project_tests.py wurde die Option „--only“ hinzugefügt, um Tests selektiv auszuführen (z. B. „python run_project_tests.py – nur für Tran Python3“);
  • Die Funktion find_program() hat jetzt die Möglichkeit, nur nach erforderlichen Versionen eines Programms zu suchen (die Version wird bestimmt, indem das Programm mit der Option „-version“ ausgeführt wird);
  • Um den Export von Symbolen zu steuern, wurde der Funktion shared_module() die Option vs_module_defs hinzugefügt, ähnlich wie shared_library();
  • Das kconfig-Modul wurde erweitert, um configure_file() zum Angeben einer Eingabedatei zu unterstützen;
  • Es wurde die Möglichkeit hinzugefügt, mehrere Eingabedateien für „command:“-Handler zu configure_file(); anzugeben.
  • Der Befehl „dist“ zum Erstellen eines Archivs wurde in die Kategorie der Befehle der ersten Ebene verschoben (zuvor war der Befehl an Ninja gebunden). Option „--formats“ hinzugefügt, um die zu erstellenden Archivtypen zu definieren (z. B.
    „meson dist -formats=xztar,zip“).

Source: opennet.ru

Kommentar hinzufügen