Meson build system release 0.52

offentliggjort bygge systemudgivelse Meson 0.52, 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 leveres licenseret under Apache 2.0.

Hovedmålet med Meson-udvikling er at give høj hastighed i samlingsprocessen kombineret med bekvemmelighed og brugervenlighed. I stedet for make-værktøjet bruger standard build værktøjssættet Ninja, men det er også muligt at bruge andre backends, såsom xcode og VisualStudio. Systemet har en indbygget multi-platform afhængighedshandler, der giver dig mulighed for at bruge Meson til at bygge pakker til distributioner. Samlingsregler er specificeret i et forenklet domænespecifikt sprog, er yderst læsbare og forståelige for brugeren (som forfatternes tilsigtede, bør udvikleren bruge et minimum af tid på at skrive regler).

Understøttet krydskompilere og bygge på Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS og Windows ved hjælp af GCC, Clang, Visual Studio og andre compilere. Det er muligt at bygge projekter i forskellige programmeringssprog, herunder C, C++, Fortran, Java og Rust. 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 generering af fuldstændig identiske eksekverbare filer.

The main innovationer Meson 0.52:

  • Tilføjet eksperimentel støtte til Webassembly ved hjælp af Emscripten som en compiler;
  • Supporten til Illumos- og Solaris-platformene er blevet væsentligt forbedret og bragt i funktionsdygtig stand;
  • Det er muligt at ignorere gettext-baserede internationaliseringsscripts, hvis systemet ikke har gettext-værktøjerne installeret (tidligere blev der vist en fejl ved brug af i18n-modulet på systemer uden gettext);
  • Forbedret understøttelse af statiske biblioteker. Mange problemer ved brug af afinstallerede statiske biblioteker er blevet løst;
  • Tilføjet muligheden for at bruge ordbøger til at tildele miljøvariabler. Når miljø() kaldes, kan det første element nu angives som en ordbog, hvor miljøvariabler er defineret i nøgle/værdi-form. Disse variabler vil blive overført til environment_object, som om de var individuelt indstillet via set()-metoden. Ordbøger kan nu også videregives til forskellige funktioner, der understøtter et "env"-argument;
  • Tilføjet funktion "runtarget alias_target(target_name, dep1, ...)", der opretter et nyt build-mål på første niveau, der kan kaldes med den valgte build-backend (f.eks. "ninja target_name"). Dette build-mål kører ingen kommandoer, men sikrer, at alle afhængigheder er bygget;
  • Aktiveret automatisk indstilling af miljøvariablen PKG_CONFIG_SYSROOT_DIR under krydskompilering, hvis der er en sys_root-indstilling i afsnittet "[egenskaber]";
  • Tilføjet "--gdb-path"-mulighed for at bestemme stien til GDB-debuggeren, når "--gdb-testnavn"-indstillingen blev angivet for at køre GDB med det angivne testscript;
  • Tilføjet automatisk registrering af det klang-ryddelige byggemål for at køre denne linter med alle kildefiler. Målet oprettes, hvis clang-tidy er tilgængelig i systemet, og filen ".clang-tidy" (eller "_clang-tidy") er defineret i projektets rod;
  • Tilføjet afhængighed('blokke') til brug i Clang-udvidelsen Blocks;
  • Linker- og compilervisningerne er adskilt, hvilket gør det muligt at bruge forskellige kombinationer af compilere og linkere;
  • Tilføjet metoden all_dependencies() til SourceSet-objekter ud over metoden all_sources();
  • I run_project_tests.py er "--only"-indstillingen blevet tilføjet til selektivt at køre tests (f.eks. "python run_project_tests.py —only fortran python3");
  • Find_program()-funktionen har nu mulighed for kun at søge efter nødvendige versioner af et program (versionen bestemmes ved at køre programmet med "-version"-indstillingen);
  • For at kontrollere eksporten af ​​symboler er vs_module_defs-indstillingen blevet tilføjet til shared_module()-funktionen, svarende til shared_library();
  • kconfig-modulet er blevet udvidet til at understøtte configure_file() for at specificere en inputfil;
  • Tilføjet muligheden for at angive flere inputfiler for "command:"-handlere til configure_file();
  • Kommandoen "dist" til at oprette et arkiv er blevet flyttet til kategorien af ​​kommandoer på første niveau (tidligere var kommandoen knyttet til ninja). Tilføjet "--formats" mulighed for at definere de typer arkiver, der skal oprettes (f.eks.
    "meson dist -formats=xztar,zip").

Kilde: opennet.ru

Tilføj en kommentar