Meson build system release 1.1

Byggsystemet Meson 1.1.0 har släppts, som används för att bygga projekt som X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME och GTK. Mesons kod är skriven i Python och är licensierad under Apache 2.0-licensen.

Huvudmålet med Mesons utveckling är att ge hög hastighet i monteringsprocessen kombinerat med bekvämlighet och användarvänlighet. Istället för make-verktyget används Ninja-verktygslådan som standard när man bygger, men andra backends som xcode och VisualStudio kan också användas. Systemet har en inbyggd beroendehanterare för flera plattformar som låter dig använda Meson för att bygga paket för distributioner. Sammansättningsreglerna är specificerade på ett förenklat domänspecifikt språk, är mycket läsbara och förståeliga för användaren (som författarna avsett bör utvecklaren lägga minst tid på att skriva regler).

Stöder korskompilering och byggnad på Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS och Windows med GCC, Clang, Visual Studio och andra kompilatorer. Det är möjligt att bygga projekt i olika programmeringsspråk, inklusive C, C++, Fortran, Java och Rust. Inkrementellt byggläge stöds, där endast komponenter som är direkt relaterade till ändringar som gjorts sedan den senaste byggnaden byggs om. Meson kan användas för att generera repeterbara builds, där körning av builden i olika miljöer resulterar i generering av helt identiska körbara filer.

De viktigaste innovationerna i Meson 1.1:

  • Ett nytt "objects:"-argument har lagts till declare_dependency() för att bifoga objekt direkt till körbara filer i form av interna beroenden som inte kräver användning av link_who.
  • Kommandot "meson devenv -dump" har nu möjlighet att ange en fil att skriva miljövariabler till istället för att skriva ut den till standardutdata.
  • Lade till metoderna FeatureOption.enable_if och FeatureOption.disable_if för att göra det lättare att skapa villkor som förberedelse för att skicka parametrar till dependency()-funktionen. opt = get_option('funktion').disable_if(inte foo, error_message: 'Kan inte aktivera funktionen när foo inte också är aktiverad') dep = dependency('foo', obligatoriskt: opt)
  • Det är tillåtet att skicka genererade objekt som argument till "objekt:".
  • Projektfunktionen stöder nu installation av filer med information om projektlicenser.
  • Att köra "sudo meson install" säkerställer att privilegier återställs under ombyggnader för målplattformar.
  • Kommandot "meson install" ger möjlighet att ange en separat hanterare för att erhålla root-rättigheter (du kan till exempel välja polkit, sudo, opendoas eller $MESON_ROOT_CMD). Att köra "mesoninstallation" i icke-interaktivt läge försöker inte längre eskalera privilegier.
  • Lade till stöd för läsning av alternativ från filen meson.options istället för meson_options.txt.
  • Omdirigering av information om framstegen med introspektion till stderr tillhandahålls.
  • Lade till en ny "ingen" backend (--backend=ingen) för att skapa projekt som bara har installationsregler och inga byggregler.
  • Lade till ett nytt beroende pybind11, vilket gör att dependency('pybind11') kan fungera med pkg-config och cmake utan att använda skriptet pybind11-config.
  • Alternativen "--reconfigure" och "--wipe" är tillåtna (meson setup --reconfigure builddir och meson setup --wipe builddir ) med en tom builddir.
  • Lade till stöd för nyckelordet dry_run till meson.add_install_script() för att tillåta körning av dina egna installationsskript när du anropar "meson install --dry-run".

Källa: opennet.ru

Lägg en kommentar