Meson build system release 1.1

Udgivelsen af ​​Meson 1.1.0 byggesystemet er blevet offentliggjort, som bruges til at bygge projekter som X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME og GTK. Meson-koden er skrevet i Python og er licenseret under Apache 2.0-licensen.

Det vigtigste udviklingsmål for Meson er at levere en højhastigheds monteringsproces kombineret med bekvemmelighed og brugervenlighed. I stedet for at lave bruger buildet Ninja-værktøjssættet som standard, men andre backends såsom xcode og VisualStudio kan også bruges. Systemet har en indbygget multi-platform afhængighedshandler, der giver dig mulighed for at bruge Meson til at bygge pakker til distributioner. Samlingsregler er sat i et forenklet domænespecifikt sprog, de er letlæselige og forståelige for brugeren (ifølge forfatternes idé skal udvikleren bruge minimum tid på at skrive regler).

Krydskompilering og bygning på Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS og Windows ved hjælp af GCC, Clang, Visual Studio og andre compilere understøttes. Det er muligt at bygge projekter i forskellige programmeringssprog, herunder C, C++, Fortran, Java og Rust. En inkrementel build-tilstand er understøttet, hvor kun komponenter, der er direkte relateret til ændringer foretaget siden den sidste build, genopbygges. Meson kan bruges til at generere gentagelige builds, hvor kørsel af build i forskellige miljøer resulterer i fuldstændig identiske eksekverbare filer.

Vigtigste innovationer i Meson 1.1:

  • Et nyt "objects:"-argument er blevet tilføjet til declare_dependency() for at vedhæfte objekter direkte til eksekverbare som interne afhængigheder, der ikke kræver link_who.
  • Kommandoen "meson devenv --dump" har den valgfrie mulighed for at specificere en fil, der skal skrives miljøvariabler til, i stedet for at udlæse til standardoutputstrømmen.
  • Tilføjet metoderne FeatureOption.enable_if og FeatureOption.disable_if for at gøre det nemmere at oprette betingelser som forberedelse til at overføre parametre til dependency()-funktionen. opt = get_option('feature').disable_if(ikke foo, error_message: 'Kan ikke aktivere funktion, når foo ikke også er aktiveret') dep = dependency('foo', påkrævet: opt)
  • Det er tilladt at videregive genererede objekter blandt "objekter:"-argumenterne.
  • Projektfunktionen understøtter installation af filer med information om projektlicenser.
  • Udførelse af "sudo meson install" sikrer privilegiets nulstilling under genopbygning af målplatforme.
  • Kommandoen "meson install" giver mulighed for at specificere en separat handler for at opnå root-tilladelser (du kan f.eks. vælge polkit, sudo, opendoas eller $MESON_ROOT_CMD). At køre "meson install" i ikke-interaktiv tilstand forsøger ikke længere at hæve privilegier.
  • Tilføjet understøttelse af læsningsmuligheder fra filen meson.options i stedet for meson_options.txt.
  • Forudsat omdirigering til stderr af output af information om fremskridt med introspektion.
  • En ny "none" backend (--backend=none) er blevet tilføjet for at skabe projekter, der kun har installationsregler og ingen build-regler.
  • En ny afhængighed pybind11 er blevet tilføjet for at få dependency('pybind11') til at fungere med pkg-config og cmake uden at bruge pybind11-config scriptet.
  • Indstillingerne "--reconfigure" og "--wipe" (meson setup --reconfigure builddir og meson setup --wipe builddir ) er tilladt med en tom builddir.
  • meson.add_install_script() tilføjede understøttelse af nøgleordet dry_run, som giver dig mulighed for at køre dine egne installationsscripts, når du kalder "meson install --dry-run".

Kilde: opennet.ru

Tilføj en kommentar