Meson bygge systemutgivelse 1.1

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

Legg til en kommentar