Meson build system release 0.52

publiceras bygga systemversion Meson 0.52, som används för att bygga projekt som X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME och GTK+. Meson-koden är skriven i Python och levereras licensierad under Apache 2.0.

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änder standardbygget verktygslådan Ninja, men det är också möjligt att använda andra backends, som xcode och VisualStudio. 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öds korskompilera och bygga 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.

Den huvudsakliga innovationer Meson 0.52:

  • Lade till experimentellt stöd för Webassembly med Emscripten som kompilator;
  • Stödet för Illumos- och Solaris-plattformarna har förbättrats avsevärt och återställts till fungerande skick;
  • Säkerställer att gettext-baserade internationaliseringsskript ignoreras om systemet inte har gettext-verktygssatsen installerad (tidigare visades ett fel när i18n-modulen användes på system utan gettext);
  • Förbättrat stöd för statiska bibliotek. Många problem vid användning av avinstallerade statiska bibliotek har lösts;
  • Lade till möjligheten att använda ordböcker för att tilldela miljövariabler. När miljö() anropas, kan det första elementet nu anges som en ordbok där miljövariabler definieras i nyckel-/värdeform. Dessa variabler kommer att överföras till environment_object som om de var individuellt inställda via set()-metoden. Ordböcker kan nu också skickas till olika funktioner som stöder ett "env"-argument;
  • Lade till funktionen "runtarget alias_target(target_name, dep1, ...)" som skapar ett nytt build-mål på första nivå som kan anropas med den valda build-backend (t.ex. "ninja target_name"). Detta byggmål kör inga kommandon, men säkerställer att alla beroenden byggs;
  • Aktiverad automatisk inställning av miljövariabeln PKG_CONFIG_SYSROOT_DIR under korskompilering om det finns en sys_root-inställning i avsnittet "[egenskaper]";
  • Lade till alternativet "--gdb-path" för att bestämma sökvägen till GDB-debuggern när alternativet "--gdb testname" specificerades för att köra GDB med det angivna testskriptet;
  • Lade till automatisk detektering av det klangsnygga byggmålet för att köra denna linter med alla källfiler. Målet skapas om clang-tidy är tillgängligt i systemet och filen ".clang-tidy" (eller "_clang-tidy") är definierad i projektroten;
  • Lade till beroende('block') för användning i Clang-tillägget Block;
  • Linker- och kompilatorvyerna är separerade, vilket gör att olika kombinationer av kompilatorer och länkare kan användas;
  • Lade till metoden all_dependencies() till SourceSet-objekt utöver metoden all_sources();
  • I run_project_tests.py har alternativet “--only” lagts till för att selektivt köra tester (till exempel “python run_project_tests.py —only fortran python3”);
  • Funktionen find_program() har nu möjligheten att endast söka efter nödvändiga versioner av ett program (versionen bestäms genom att köra programmet med alternativet "-version");
  • För att kontrollera exporten av symboler har alternativet vs_module_defs lagts till i shared_module()-funktionen, liknande shared_library();
  • Modulen kconfig har utökats för att stödja configure_file() för att specificera en indatafil;
  • Lade till möjligheten att ange flera indatafiler för "command:"-hanterare till configure_file();
  • Kommandot "dist" för att skapa ett arkiv har flyttats till kategorin kommandon på första nivån (tidigare var kommandot kopplat till ninja). Lade till alternativet "--formats" för att definiera vilka typer av arkiv som ska skapas (till exempel,
    "meson dist -formats=xztar,zip").

Källa: opennet.ru

Lägg en kommentar