Meson bygge systemutgivelse 0.52

publisert bygge systemutgivelse Meson 0.52, som brukes til å bygge prosjekter som X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME og GTK+. Meson-koden er skrevet i Python og medfølgende lisensiert under Apache 2.0.

Hovedmålet med Meson-utvikling er å gi høy hastighet i monteringsprosessen kombinert med bekvemmelighet og brukervennlighet. I stedet for make-verktøyet, bruker standard build verktøysettet Ninja, men det er også mulig å bruke andre backends, som xcode og VisualStudio. Systemet har en innebygd multi-plattform avhengighetsbehandler som lar deg bruke Meson til å bygge pakker for distribusjoner. Monteringsreglene er spesifisert på et forenklet domenespesifikt språk, er svært lesbare og forståelige for brukeren (som ment av forfatterne, bør utvikleren bruke minimum tid på å skrive regler).

Støttet krysskompilere og bygge på Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS og Windows ved å bruke GCC, Clang, Visual Studio og andre kompilatorer. Det er mulig å bygge prosjekter i ulike programmeringsspråk, inkludert C, C++, Fortran, Java og Rust. Inkrementell byggemodus støttes, der bare komponenter som er direkte relatert til endringer som er gjort siden siste bygg, gjenoppbygges. Meson kan brukes til å generere repeterbare bygg, der kjøring av bygget i forskjellige miljøer resulterer i generering av helt identiske kjørbare filer.

Den viktigste innovasjoner Meson 0.52:

  • Lagt til eksperimentell støtte for Webassembly ved å bruke Emscripten som kompilator;
  • Støtte for Illumos- og Solaris-plattformene har blitt betydelig forbedret og brakt til fungerende tilstand;
  • Sikrer at gettext-baserte internasjonaliseringsskript ignoreres hvis systemet ikke har gettext-verktøysettet installert (tidligere ble det vist en feil ved bruk av i18n-modulen på systemer uten gettext);
  • Forbedret støtte for statiske biblioteker. Mange problemer ved bruk av avinstallerte statiske biblioteker har blitt løst;
  • Lagt til muligheten til å bruke ordbøker for å tilordne miljøvariabler. Når du kaller miljø(), kan det første elementet nå spesifiseres som en ordbok der miljøvariabler er definert i nøkkel/verdi-form. Disse variablene vil bli overført til environment_object som om de var individuelt satt via set()-metoden. Ordbøker kan nå også sendes til ulike funksjoner som støtter et "env"-argument;
  • Lagt til funksjon "runtarget alias_target(target_name, dep1, ...)" som oppretter et nytt byggemål på første nivå som kan kalles med den valgte build-backend (f.eks. "ninja target_name"). Dette byggemålet kjører ingen kommandoer, men sikrer at alle avhengigheter bygges;
  • Aktivert automatisk innstilling av miljøvariabelen PKG_CONFIG_SYSROOT_DIR under krysskompilering hvis det er en sys_root-innstilling i delen "[egenskaper]";
  • Lagt til "--gdb-path"-alternativet for å bestemme banen til GDB-feilsøkeren når du spesifiserer alternativet "--gdb testname" for å kjøre GDB med det spesifiserte testskriptet;
  • Lagt til automatisk gjenkjenning av det klangryddige byggemålet for å kjøre denne linteren med alle kildefilene. Målet opprettes hvis clang-tidy er tilgjengelig i systemet og filen ".clang-tidy" (eller "_clang-tidy") er definert i prosjektroten;
  • Lagt til avhengighet('blokker') for bruk i Clang-utvidelsen Blocks;
  • Linker- og kompilatorvisningene er atskilt, slik at forskjellige kombinasjoner av kompilatorer og linkere kan brukes;
  • La til all_dependencies()-metoden til SourceSet-objekter i tillegg til all_sources()-metoden;
  • I run_project_tests.py er «--only»-alternativet lagt til for selektivt kjøre tester (for eksempel «python run_project_tests.py —only fortran python3»);
  • Find_program()-funksjonen har nå muligheten til å søke kun etter nødvendige versjoner av et program (versjonen bestemmes ved å kjøre programmet med "-versjon"-alternativet);
  • For å kontrollere eksporten av symboler har vs_module_defs-alternativet blitt lagt til shared_module()-funksjonen, lik shared_library();
  • kconfig-modulen har blitt utvidet til å støtte configure_file() for å spesifisere en inngangsfil;
  • Lagt til muligheten til å spesifisere flere inngangsfiler for "command:"-behandlere til configure_file();
  • "dist"-kommandoen for å lage et arkiv er flyttet til kategorien førstenivåkommandoer (tidligere var kommandoen knyttet til ninja). Lagt til "--formats"-alternativet for å definere hvilke typer arkiver som skal opprettes (f.eks.
    "meson dist -formats=xztar,zip").

Kilde: opennet.ru

Legg til en kommentar