Meson bouwsysteem release 1.1

De release van het Meson 1.1.0 build-systeem is gepubliceerd, dat wordt gebruikt om projecten te bouwen zoals X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME en GTK. De Meson-code is geschreven in Python en valt onder de Apache 2.0-licentie.

Het belangrijkste ontwikkelingsdoel van Meson is om een ​​snel assemblageproces te bieden in combinatie met gemak en gebruiksgemak. In plaats van make gebruikt de build standaard de Ninja-toolkit, maar ook andere backends zoals xcode en VisualStudio kunnen worden gebruikt. Het systeem heeft een ingebouwde multi-platform afhankelijkheidshandler waarmee u Meson kunt gebruiken om pakketten voor distributies te bouwen. Assemblageregels zijn opgesteld in een vereenvoudigde domeinspecifieke taal, ze zijn goed leesbaar en begrijpelijk voor de gebruiker (volgens het idee van de auteurs zou de ontwikkelaar een minimum aan tijd moeten besteden aan het schrijven van regels).

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 wordt ondersteund. Het is mogelijk om projecten te bouwen in verschillende programmeertalen, waaronder C, C++, Fortran, Java en Rust. Er wordt een incrementele bouwmodus ondersteund, waarin alleen componenten worden herbouwd die rechtstreeks verband houden met wijzigingen die zijn aangebracht sinds de laatste bouw. Meson kan worden gebruikt om herhaalbare builds te genereren, waarbij het uitvoeren van de build in verschillende omgevingen resulteert in volledig identieke uitvoerbare bestanden.

Belangrijkste innovaties van Meson 1.1:

  • Er is een nieuw argument "objects:" toegevoegd aan declare_dependency() om objecten rechtstreeks aan uitvoerbare bestanden te koppelen als interne afhankelijkheden waarvoor link_who niet vereist is.
  • De opdracht "meson devenv --dump" heeft de optionele mogelijkheid om een ​​bestand te specificeren om omgevingsvariabelen naar te schrijven, in plaats van uit te voeren naar de standaard uitvoerstroom.
  • De methoden FeatureOption.enable_if en FeatureOption.disable_if zijn toegevoegd om het gemakkelijker te maken voorwaarden te maken ter voorbereiding op het doorgeven van parameters aan de functie dependency(). opt = get_option('feature').disable_if(not foo, error_message: 'Cannot enable feature when foo is not also enabled') dep = dependency('foo', vereist: opt)
  • Het is toegestaan ​​om gegenereerde objecten door te geven onder de "objecten:" argumenten.
  • De projectfunctie ondersteunt de installatie van bestanden met informatie over projectlicenties.
  • Het uitvoeren van "sudo meson install" zorgt voor reset van bevoegdheden tijdens het opnieuw opbouwen voor doelplatforms.
  • De opdracht "meson install" biedt de mogelijkheid om een ​​afzonderlijke handler te specificeren voor het verkrijgen van rootrechten (u kunt bijvoorbeeld polkit, sudo, opendoas of $MESON_ROOT_CMD selecteren). Het uitvoeren van "meson install" in niet-interactieve modus probeert niet langer om privileges te verhogen.
  • Ondersteuning toegevoegd voor leesopties uit het bestand meson.options in plaats van meson_options.txt.
  • Omleiding voorzien naar stderr van de uitvoer van informatie over de voortgang van introspectie.
  • Er is een nieuwe "none" backend (--backend=none) toegevoegd om projecten te maken die alleen installatieregels hebben en geen buildregels.
  • Er is een nieuwe afhankelijkheid pybind11 toegevoegd om afhankelijkheid('pybind11') te laten werken met pkg-config en cmake zonder het pybind11-config-script te gebruiken.
  • De opties "--reconfigure" en "--wipe" (meson setup --reconfigure builddir en meson setup --wipe builddir ) zijn toegestaan ​​met een lege builddir.
  • meson.add_install_script() heeft ondersteuning toegevoegd voor het trefwoord dry_run, waarmee u uw eigen installatiescripts kunt uitvoeren wanneer u "meson install --dry-run" aanroept.

Bron: opennet.ru

Voeg een reactie