Utgivelsen av Meson 1.1.0 byggesystemet er publisert, som brukes til å bygge prosjekter som X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME og GTK. Meson-koden er skrevet i Python og er lisensiert under Apache 2.0-lisensen.
Det viktigste utviklingsmålet til Meson er å gi en høyhastighets monteringsprosess kombinert med bekvemmelighet og brukervennlighet. I stedet for å lage bruker bygningen Ninja-verktøysettet som standard, men andre backends som xcode og VisualStudio kan også brukes. Systemet har en innebygd multi-plattform avhengighetsbehandler som lar deg bruke Meson til å bygge pakker for distribusjoner. Monteringsregler er satt på et forenklet domenespesifikt språk, de er godt lesbare og forståelige for brukeren (i følge forfatternes idé bør utvikleren bruke minimum tid på å skrive regler).
Krysskompilering og bygging på Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS og Windows ved å bruke GCC, Clang, Visual Studio og andre kompilatorer støttes. Det er mulig å bygge prosjekter i ulike programmeringsspråk, inkludert C, C++, Fortran, Java og Rust. En inkrementell byggemodus støttes, der bare komponenter som er direkte relatert til endringer som er gjort siden siste konstruksjon, gjenoppbygges. Meson kan brukes til å generere repeterbare bygg, der kjøring av bygget i forskjellige miljøer resulterer i helt identiske kjørbare filer.
Hovedinnovasjoner av Meson 1.1:
- Et nytt "objects:"-argument er lagt til declare_dependency() for å knytte objekter direkte til kjørbare filer som interne avhengigheter som ikke krever link_who.
- Kommandoen "meson devenv --dump" har den valgfrie muligheten til å spesifisere en fil å skrive miljøvariabler til, i stedet for å sende ut til standard utdatastrøm.
- Lagt til metodene FeatureOption.enable_if og FeatureOption.disable_if for å gjøre det enklere å lage betingelser som forberedelse til å sende parametere til dependency()-funksjonen. opt = get_option('funksjon').disable_if(ikke foo, error_message: 'Kan ikke aktivere funksjonen når foo ikke også er aktivert') dep = dependency('foo', nødvendig : opt)
- Det er tillatt å sende genererte objekter blant "objekter:"-argumentene.
- Prosjektfunksjonen støtter installasjon av filer med informasjon om prosjektlisenser.
- Å kjøre "sudo meson install" sikrer tilbakestilling av privilegier under gjenoppbygging for målplattformer.
- Kommandoen "meson install" gir muligheten til å spesifisere en separat behandler for å få root-tillatelser (du kan for eksempel velge polkit, sudo, opendoas eller $MESON_ROOT_CMD). Å kjøre "meson install" i ikke-interaktiv modus forsøker ikke lenger å heve privilegier.
- Lagt til støtte for lesealternativer fra meson.options-filen i stedet for meson_options.txt.
- Gir omdirigering til stderr av utdata av informasjon om fremdriften av introspeksjon.
- En ny "none" backend (--backend=none) er lagt til for å lage prosjekter som kun har installasjonsregler og ingen byggeregler.
- En ny avhengighet pybind11 er lagt til for å få dependency('pybind11') til å fungere med pkg-config og cmake uten å bruke pybind11-config-skriptet.
- Alternativene "--reconfigure" og "--wipe" (meson setup --reconfigure builddir og meson setup --wipe builddir ) er tillatt med en tom builddir.
- meson.add_install_script() la til støtte for nøkkelordet dry_run, som lar deg kjøre dine egne installasjonsskript når du kaller "meson install --dry-run".
Kilde: opennet.ru