Meson bouwsysteem release 0.52

gepubliceerd systeemversie bouwen Meson 0.52, dat wordt gebruikt om projecten te bouwen zoals X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME en GTK+. Meson-code is geschreven in Python en geleverde gelicentieerd onder Apache 2.0.

Het belangrijkste doel van de ontwikkeling van Meson is het bieden van een hoge snelheid van het assemblageproces, gecombineerd met gemak en gebruiksgemak. In plaats van het make-hulpprogramma gebruikt de standaardbuild de toolkit Ninja, maar het is ook mogelijk om andere backends te gebruiken, zoals xcode en VisualStudio. Het systeem heeft een ingebouwde afhankelijkheidshandler voor meerdere platforms waarmee u Meson kunt gebruiken om pakketten voor distributies te bouwen. De montageregels zijn gespecificeerd in een vereenvoudigde domeinspecifieke taal, zijn zeer leesbaar en begrijpelijk voor de gebruiker (zoals bedoeld door de auteurs, moet de ontwikkelaar een minimum aan tijd besteden aan het schrijven van regels).

Ondersteund cross-compileren en bouwen op Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS en Windows met behulp van GCC, Clang, Visual Studio en andere compilers. Het is mogelijk om projecten te bouwen in verschillende programmeertalen, waaronder C, C++, Fortran, Java en Rust. De incrementele bouwmodus wordt ondersteund, waarin alleen componenten die rechtstreeks verband houden met wijzigingen die zijn aangebracht sinds de laatste build, opnieuw worden opgebouwd. Meson kan worden gebruikt om herhaalbare builds te genereren, waarbij het uitvoeren van de build in verschillende omgevingen resulteert in het genereren van volledig identieke uitvoerbare bestanden.

De belangrijkste innovaties Meson 0.52:

  • Experimentele ondersteuning toegevoegd voor Webassembly met Emscripten als compiler;
  • Ondersteuning voor de Illumos- en Solaris-platforms is aanzienlijk verbeterd en werkende staat;
  • Het is mogelijk om op gettext gebaseerde internationaliseringsscripts te negeren als op het systeem de gettext-hulpmiddelen niet zijn geïnstalleerd (voorheen werd er een fout weergegeven bij gebruik van de i18n-module op systemen zonder gettext);
  • Verbeterde ondersteuning voor statische bibliotheken. Veel problemen bij het gebruik van niet-geïnstalleerde statische bibliotheken zijn opgelost;
  • De mogelijkheid toegevoegd om woordenboeken te gebruiken om omgevingsvariabelen toe te wijzen. Bij het aanroepen van Environment() kan het eerste element nu worden gespecificeerd als een woordenboek waarin omgevingsvariabelen worden gedefinieerd in de vorm van een sleutel/waarde. Deze variabelen worden overgebracht naar Environment_object alsof ze individueel zijn ingesteld via de set() -methode. Woordenboeken kunnen nu ook worden doorgegeven aan verschillende functies die een "env"-argument ondersteunen;
  • Functie "runtarget alias_target(target_name, dep1, ...)" toegevoegd die een nieuw builddoel op het eerste niveau creëert dat kan worden aangeroepen met de geselecteerde build-backend (bijvoorbeeld "ninja target_name"). Dit builddoel voert geen opdrachten uit, maar zorgt ervoor dat alle afhankelijkheden worden opgebouwd;
  • Automatische instelling van de omgevingsvariabele PKG_CONFIG_SYSROOT_DIR ingeschakeld tijdens cross-compilatie als er een sys_root-instelling is in de sectie "[properties]";
  • Optie "--gdb-path" toegevoegd om het pad naar de GDB-foutopsporing te bepalen bij het opgeven van de optie "--gdb testname" om GDB uit te voeren met het opgegeven testscript;
  • Automatische detectie van het overzichtelijke bouwdoel toegevoegd om deze linter met alle bronbestanden uit te voeren. Het doel wordt gemaakt als clang-tidy beschikbaar is in het systeem en het bestand “.clang-tidy” (of “_clang-tidy”) is gedefinieerd in de hoofdmap van het project;
  • Afhankelijkheid('blokken') toegevoegd voor gebruik in de Clang-extensie Blokken;
  • De linker- en compilerweergaven zijn gescheiden, waardoor verschillende combinaties van compilers en linkers kunnen worden gebruikt;
  • Methode all_dependencies() toegevoegd aan SourceSet-objecten naast de methode all_sources();
  • In run_project_tests.py is de optie “--only” toegevoegd om selectief tests uit te voeren (bijvoorbeeld “python run_project_tests.py –only fortran python3”);
  • De functie find_program() heeft nu de mogelijkheid om alleen naar vereiste versies van een programma te zoeken (de versie wordt bepaald door het programma uit te voeren met de optie “-version”);
  • Om de export van symbolen te controleren, is de optie vs_module_defs toegevoegd aan de shared_module() functie, vergelijkbaar met shared_library();
  • De kconfig-module is uitgebreid om configure_file() te ondersteunen voor het specificeren van een invoerbestand;
  • De mogelijkheid toegevoegd om meerdere invoerbestanden op te geven voor “command:” handlers voor configure_file();
  • De opdracht “dist” voor het maken van een archief is verplaatst naar de categorie opdrachten van het eerste niveau (voorheen was de opdracht gekoppeld aan ninja). Optie "--formats" toegevoegd om de typen archieven te definiëren die moeten worden gemaakt (bijvoorbeeld
    "meson dist -formats=xztar,zip").

Bron: opennet.ru

Voeg een reactie