Meson bygge systemutgivelse 1.3

Utgivelsen av Meson 1.3.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.3:

  • Lagt til alternativet "werror: true" til kompilatorsjekkmetodene compiler.compiles(), compiler.links() og compiler.run(), som behandler kompilatoradvarsler som feil (kan brukes til å sjekke at koden er bygget uten advarsler ).
  • Lagt til has_define-metode for å sjekke symboldefinisjon av forprosessor.
  • Parameteren macro_name er lagt til funksjonen configure_file() og legger til makrobeskyttelse for doble tilkoblinger gjennom "#include" ("include guards"), designet i stil med makroer på C-språket (som forenkler opprettelsen av konfigurasjonsfiler med dynamiske makronavn).
  • Et nytt utdataformat er lagt til configure_file() - JSON ("output_format: json").
  • Lagt til muligheten til å bruke verdilister til c_std og cpp_std parametere (for eksempel "default_options: 'c_std=gnu11,c11′').
  • I moduler som bruker CustomTarget til å behandle filer, har muligheten til å tilpasse meldinger som sendes ut av ninja-verktøyet blitt lagt til.
  • build_target "jar" er utdatert og "jar()"-kallet anbefales i stedet.
  • 'env'-parameteren er lagt til generator.process()-metoden for å angi miljøvariabelen som generatoren skal behandle input gjennom.
  • Når du spesifiserer byggemålnavn knyttet til kjørbare filer, tillates suffikser som "executable('foo', 'main.c', name_suffix: 'bar')" å generere flere kjørbare filer i samme katalog.
  • La til "vs_module_defs"-parameteren til den kjørbare()-funksjonen for å bruke en def-fil som definerer listen over funksjoner som sendes til shared_module().
  • La til 'default_options'-parameter til funn_program()-funksjonen for å angi standardalternativer for reservedelprosjekt.
  • Lagt til metoden fs.relative_to(), som returnerer den relative banen for det første argumentet, i forhold til det andre, hvis den første banen eksisterer. For eksempel, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Følgende_symlinks-parameteren er lagt til funksjonene install_data(), install_headers() og install_subdir(); når den er angitt, følges symbolske lenker.
  • En "fill"-parameter er lagt til int.to_string()-metoden for å inkrementelt fylle strengen med innledende nuller. Hvis du for eksempel kaller message(n.to_string(fill: 3)) for n=4, vil det produsere strengen "004".
  • Lagt til et nytt mål, clang-tidy-fix, som spesifiserer å kjøre clang-tidy-verktøyet med "-fix"-flagget.
  • Muligheten til å spesifisere suffikset (TARGET_SUFFIX) til sammenstillingsmålet ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) er lagt til kompileringskommandoen.
  • Lagt til miljøvariabel MESON_PACKAGE_CACHE_DIR for å overstyre banen til pakkebufferen (delprosjekter/pakkecache), for eksempel slik at du kan bruke en delt hurtigbuffer i flere prosjekter.
  • Lagt til kommandoen "meson setup --clearcache" for å tømme vedvarende cache.
  • Støtte for det "påkrevde" nøkkelordet er lagt til alle "has_*" kompilatorkontrollmetoder, for eksempel, i stedet for "assert(cc.has_function('some_function'))" kan du nå spesifisere "cc.has_function('some_function' , påkrevd: sant)".
  • Et nytt nøkkelord, rust_abi, er lagt til funksjonene shared_library(), static_library(), library() og shared_module(), som skal brukes i stedet for den utdaterte rust_crate_type.

Kilde: opennet.ru

Legg til en kommentar