Meson build system release 1.3

Byggsystemet Meson 1.3.0 har släppts, som används för att bygga projekt som X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME och GTK. Mesons kod är skriven i Python och är licensierad under Apache 2.0-licensen.

Huvudmålet med Mesons utveckling är att ge hög hastighet i monteringsprocessen kombinerat med bekvämlighet och användarvänlighet. Istället för make-verktyget används Ninja-verktygslådan som standard när man bygger, men andra backends som xcode och VisualStudio kan också användas. Systemet har en inbyggd beroendehanterare för flera plattformar som låter dig använda Meson för att bygga paket för distributioner. Sammansättningsreglerna är specificerade på ett förenklat domänspecifikt språk, är mycket läsbara och förståeliga för användaren (som författarna avsett bör utvecklaren lägga minst tid på att skriva regler).

Stöder korskompilering och byggnad på Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS och Windows med GCC, Clang, Visual Studio och andra kompilatorer. Det är möjligt att bygga projekt i olika programmeringsspråk, inklusive C, C++, Fortran, Java och Rust. Inkrementellt byggläge stöds, där endast komponenter som är direkt relaterade till ändringar som gjorts sedan den senaste byggnaden byggs om. Meson kan användas för att generera repeterbara builds, där körning av builden i olika miljöer resulterar i generering av helt identiska körbara filer.

De viktigaste innovationerna i Meson 1.3:

  • Lade till alternativet "werror: true" till kompilatorkontrollmetoderna compiler.compiles(), compiler.links() och compiler.run(), som behandlar kompilatorvarningar som fel (kan användas för att kontrollera att koden är byggd utan varningar ).
  • Lade till has_define-metod för att kontrollera symboldefinition av förprocessor.
  • Parametern macro_name har lagts till i funktionen configure_file() och lägger till makroskydd för dubbla anslutningar genom "#include" ("include guards"), designad i stil med makron på C-språket (förenklar skapandet av konfigureringsfiler med dynamiska makronamn).
  • Ett nytt utdataformat har lagts till i configure_file() - JSON ("output_format: json").
  • Lade till möjligheten att använda värdelistor till parametrarna c_std och cpp_std (till exempel "default_options: 'c_std=gnu11,c11′').
  • I moduler som använder CustomTarget för att bearbeta filer, har möjligheten att anpassa meddelanden som matas ut av ninja-verktyget lagts till.
  • build_target "jar" har fasats ut och anropet "jar()" rekommenderas istället.
  • Parametern 'env' har lagts till i metoden generator.process() för att ställa in miljövariabeln genom vilken generatorn ska bearbeta indata.
  • När man anger byggmålnamn associerade med körbara filer, tillåts suffix som "executable('foo', 'main.c', name_suffix: 'bar')" att generera ytterligare körbara filer i samma katalog.
  • Lade till parametern "vs_module_defs" till funktionen exectuable() för att använda en def-fil som definierar listan över funktioner som skickas till shared_module().
  • Lade till parametern 'default_options' till funktionen find_program() för att ställa in standardalternativ för reservdelprojekt.
  • Lade till metoden fs.relative_to(), som returnerar den relativa sökvägen för det första argumentet, i förhållande till det andra, om den första sökvägen finns. Till exempel, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Följande_symlinks-parameter har lagts till i funktionerna install_data(), install_headers() och install_subdir(); när den är inställd följs symboliska länkar.
  • En "fill"-parameter har lagts till i metoden int.to_string() för att stegvis fylla strängen med inledande nollor. Till exempel, anrop av meddelande(n.to_string(fill: 3)) för n=4 kommer att producera strängen "004".
  • Lade till ett nytt mål, clang-tidy-fix, som anger att köra verktyget clang-tidy med flaggan "-fix".
  • Möjligheten att ange suffixet (TARGET_SUFFIX) för sammansättningsmålet ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) har lagts till i kompileringskommandot.
  • Lade till miljövariabel MESON_PACKAGE_CACHE_DIR för att åsidosätta sökvägen till paketcachen (subprojects/packagecache), till exempel, så att du kan använda en delad cache i flera projekt.
  • Lade till kommandot "meson setup --clearcache" för att rensa beständig cache.
  • Stöd för nyckelordet "required" har lagts till i alla "has_*" kompilatorkontrollmetoder, till exempel, istället för "assert(cc.has_function('some_function'))" kan du nu ange "cc.has_function('some_function' , krävs: sant)”.
  • Ett nytt nyckelord, rust_abi, har lagts till funktionerna shared_library(), static_library(), library() och shared_module(), som ska användas istället för den utfasade rust_crate_type.

Källa: opennet.ru

Lägg en kommentar