Veröffentlichung des Build-Systems Meson 0.51

Veröffentlicht Veröffentlichung des Build-Systems Meson 0.51, das für den Aufbau von Projekten wie X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME und GTK+ verwendet wird. Der Code von Meson ist in Python geschrieben und wird geliefert unter der Apache 2.0-Lizenz.

Das Hauptziel der Entwicklung von Meson ist es, eine hohe Geschwindigkeit des Build-Prozesses bei gleichzeitigem Benutzerkomfort und einfacher Handhabung zu gewährleisten. Anstelle des Make-Tools wird standardmäßig ein Toolset verwendet Ninja, es ist jedoch auch die Verwendung anderer Backend-Systeme wie xcode und VisualStudio möglich. In das System ist ein plattformübergreifender Abhängigkeits-Manager integriert, der es ermöglicht, Meson zum Aufbau von Paketen für Distributionen zu verwenden. Die Build-Regeln werden in einer vereinfachten domänenspezifischen Sprache definiert, die gute Lesbarkeit aufweist und für den Benutzer verständlich ist (laut den Entwicklern sollte der Entwickler nur minimal Zeit für das Schreiben von Regeln aufwenden).

Cross-Compilation und Build-Management werden unter Linux, macOS und Windows mit GCC, Clang, Visual Studio und anderen Compilern unterstützt. Projekte können in verschiedenen Programmiersprachen, einschließlich C, C++, Fortran, Java und Rust, erstellt werden. Der inkrementelle 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 verwendet werden, um reproduzierbare Builds zu erstellen, bei denen das Ausführen des Builds in verschiedenen Umgebungen zu identischen ausführbaren Dateien führt.

Haupt Neuheiten Meson 0.51:

  • Die Unterstützung für die transparente Erstellung vorhandener Projekte, die CMake-Bau-Skripte verwenden, wurde hinzugefügt. Meson kann jetzt direkt einfache Subprojekte (wie einzelne Bibliotheken) mit dem CMake-Modul auf die gleiche Weise wie native Subprojekte erstellen (darunter können CMake-Subprojekte im Verzeichnis subprojects platziert werden).
  • Für alle verwendeten Compiler ist eine vorläufige Testung durch den Aufbau und die Ausführung einfacher Testdateien (Sanity-Check) integriert, wobei die Prüfung der vom Benutzer angegebenen Flags für Cross-Compiler nicht mehr eingeschränkt ist (ab sofort werden auch die für die aktuelle Plattform nativen Compiler überprüft).
  • Es wurde die Möglichkeit hinzugefügt, die in der Cross-Kompilierung verwendeten Befehlszeilenoptionen über die Angabe eines Plattformpräfixes vor der Option zu bestimmen. Zuvor umfassten die Befehlszeilenoptionen lediglich den Aufbau für die native Plattform und konnten nicht für die Cross-Kompilierung angegeben werden. Jetzt gelten die Befehlszeilenoptionen unabhängig davon, ob es sich um einen nativen Aufbau oder eine Cross-Kompilierung handelt, was garantiert, dass sowohl für native als auch für Cross-Bauten identische Ergebnisse erzielt werden.
  • Es wurde die Möglichkeit hinzugefügt, die Flagge „—cross-file“ in der Befehlszeile mehr als einmal anzugeben, um mehrere Cross-Dateien aufzulisten.
  • Die Unterstützung des ICL-Compilers (Intel C/C++ Compiler) für die Windows-Plattform wurde hinzugefügt (ICL.EXE und ifort).
  • Es wurde eine erste Unterstützung für das Toolkit für CPU Xtensa (xt-xcc, xt-xc++, xt-nm) hinzugefügt.
  • In das Objekt „dependency“ wurde die Methode „get_variable“ hinzugefügt, die es ermöglicht, den Wert einer Variablen ohne Berücksichtigung des Typs der aktuellen Abhängigkeit abzurufen (z.B. dep.get_variable(pkg-config : 'var-name', cmake : 'COP_VAR_NAME'));
  • Ein neues Argument für die Zieleinstellungen wurde hinzugefügt – „link_language“, um die beim Aufruf des Linkers verwendete Sprache explizit festzulegen. Zum Beispiel kann ein Hauptprogramm in Fortran Code in C/C++ aufrufen, was zur automatischen Auswahl von C/C++ führt, wobei der Fortran-Linker verwendet werden muss;
  • Die Verarbeitung der Präprozessor-Flags CPPFLAGS wurde geändert. Früher speicherte Meson CPPFLAGS und spezifische Compiler-Flags (CFLAGS, CXXFLAGS) separat, jetzt werden sie untrennbar verarbeitet und die in CPPFLAGS aufgeführten Flags werden als zusätzliche Quelle für Compiler-Flags für unterstützte Sprachen angewandt;
  • Die Ausgabe von custom_target und custom_target[i] kann jetzt als Argumente in den Operationen link_with und link_whole verwendet werden;
  • In den Generatoren wurde die Möglichkeit hinzugefügt, zusätzliche Abhängigkeiten mithilfe der Option „depends“ anzugeben (z.B. generator(program_runner, output: ['@BASENAME@.c'], depends: exe));
  • In find_library wurde die Option static hinzugefügt, um nur statisch verlinkte Bibliotheken zu durchsuchen;
  • Für python.find_installation wurde die Möglichkeit hinzugefügt, das Vorhandensein eines bestimmten Python-Moduls für eine spezifische Python-Version zu überprüfen;
  • Ein neues Modul unstable-kconfig wurde hinzugefügt, um kconfig-Dateien zu parsen;
  • Ein neuer Befehl „subprojects foreach“ wurde hinzugefügt, der einen Befehl mit Argumenten akzeptiert und diesen in allen Verzeichnissen der Subprojekte ausführt;

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster