Meson Build System Version 0.51

Veröffentlicht Build-System-Release Tabelle 0.51, 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).

Cross-Kompilierung und Erstellung auf Linux, 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. 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.51:

  • Unterstützung für die transparente Erstellung vorhandener Projekte hinzugefügt, die CMake-Build-Skripte verwenden. Meson kann jetzt mithilfe des CMake-Moduls direkt einfache Unterprojekte (z. B. einzelne Bibliotheken) erstellen, ähnlich wie Standard-Unterprojekte (einschließlich CMake-Unterprojekte können im Unterprojektverzeichnis abgelegt werden).
  • Für alle verwendeten Compiler sind vorläufige Tests durch die Zusammenstellung und Ausführung einfacher Testdateien (Sanity Check) enthalten und beschränken sich nicht nur auf das Testen benutzerdefinierter Flags für Cross-Compiler (von nun an werden auch Compiler überprüft, die für die aktuelle Plattform nativ sind). .
  • Es wurde die Möglichkeit hinzugefügt, Befehlszeilenoptionen zu definieren, die während der Kreuzkompilierung verwendet werden, mit Bindung durch Angabe eines Plattformpräfixes vor der Option. Bisher deckten Befehlszeilenoptionen nur native Builds ab und konnten nicht für die Kreuzkompilierung angegeben werden. Befehlszeilenoptionen gelten jetzt unabhängig davon, ob Sie nativ oder kreuzkompilieren, um sicherzustellen, dass nativ und kreuzkompiliert identische Ergebnisse liefern.
  • Möglichkeit hinzugefügt, das Flag „--cross-file“ mehr als einmal in der Befehlszeile anzugeben, um mehrere dateiübergreifende Dateien aufzulisten;
  • Unterstützung für den ICL-Compiler (Intel C/C++ Compiler) für die Windows-Plattform (ICL.EXE und ifort) hinzugefügt;
  • Erste Toolkit-Unterstützung für Xtensa-CPUs (xt-xcc, xt-xc++, xt-nm) hinzugefügt;
  • Dem Objekt „dependency“ wurde die Methode „get_variable“ hinzugefügt, mit der Sie den Wert einer Variablen abrufen können, ohne den Typ der aktuellen Abhängigkeit zu berücksichtigen (z. B. dep.get_variable(pkg-config : 'var- name', cmake: 'COP_VAR_NAME));
  • Ein neues Ziel-Assembly-Optionsargument „link_sprache“ wurde hinzugefügt, um die Sprache, die beim Aufruf des Linkers verwendet wird, explizit anzugeben. Beispielsweise könnte ein Fortran-Hauptprogramm C/C++-Code aufrufen, der automatisch C/C++ auswählt, wenn der Fortran-Linker verwendet werden soll;
  • Die Handhabung der CPPFLAGS-Präprozessor-Flags wurde geändert. Während Meson früher CPPFLAGS und sprachspezifische Kompilierungsflags (CFLAGS, CXXFLAGS) separat speicherte, werden sie nun untrennbar verarbeitet und die in CPPFLAGS aufgeführten Flags werden als weitere Quelle für Kompilierungsflags für Sprachen verwendet, die sie unterstützen;
  • Die Ausgabe von „custom_target“ und „custom_target[i]“ kann jetzt als Argumente in den Operationen „link_with“ und „link_whole“ verwendet werden;
  • Generatoren haben jetzt die Möglichkeit, zusätzliche Abhängigkeiten mithilfe der Option „depends“ anzugeben (z. B. Generator(program_runner, Ausgabe: ['@[E-Mail geschützt] '], hängt davon ab: exe));
  • Eine statische Option zu find_library hinzugefügt, um zu ermöglichen, dass die Suche nur statisch verknüpfte Bibliotheken umfasst;
  • Für python.find_installation wurde die Möglichkeit hinzugefügt, das Vorhandensein eines bestimmten Python-Moduls für eine bestimmte Python-Version zu ermitteln;
  • Neues Modul unstable-kconfig zum Parsen von Kconfig-Dateien hinzugefügt;
  • Ein neuer Befehl „subprojects foreach“ wurde hinzugefügt, der einen Befehl mit Argumenten entgegennimmt und ihn in allen Unterprojektverzeichnissen ausführt.

Source: opennet.ru

Kommentar hinzufügen