Meson build system release 0.51

publiceras bygga systemversion Meson 0.51, 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).

Korskompilering och byggande på Linux, macOS och Windows med GCC, Clang, Visual Studio och andra kompilatorer stöds. 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.51:

  • Lade till stöd för transparent byggande av befintliga projekt som använder CMake build-skript. Meson kan nu direkt bygga enkla delprojekt (som enstaka bibliotek) med CMake-modulen, liknande standarddelprojekt (inklusive CMake-delprojekt kan placeras i underprojektkatalogen);
  • För alla använda kompilatorer ingår preliminär testning genom montering och exekvering av enkla testfiler (sanity check), inte begränsat till att testa användarspecificerade flaggor för korskompilatorer (från och med nu kontrolleras även kompilatorer som är inbyggda i den aktuella plattformen) .
  • Lade till möjligheten att definiera kommandoradsalternativ som används under korskompilering, med bindning genom att ange ett plattformsprefix före alternativet. Tidigare omfattade kommandoradsalternativ endast inbyggda byggnader och kunde inte specificeras för korskompilering. Kommandoradsalternativ gäller nu oavsett om du bygger inbyggt eller korskompilerar, vilket säkerställer att inbyggda och korsbyggda ger identiska resultat;
  • Lade till möjligheten att ange flaggan "--cross-file" mer än en gång på kommandoraden för att lista flera korsfiler;
  • Tillagt stöd för ICL-kompilatorn (Intel C/C++-kompilator) för Windows-plattformen (ICL.EXE och ifort);
  • Lade till initialt verktygssatsstöd för CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
  • Metoden "get_variable" har lagts till i objektet "dependency", vilket gör att du kan få värdet på en variabel utan att ta hänsyn till typen av det aktuella beroendet (till exempel dep.get_variable(pkg-config : 'var- name', cmake : 'COP_VAR_NAME));
  • Lade till ett nytt argument för målsammansättningsalternativ, "link_language", för att explicit specificera språket som används när länken anropas. Till exempel kan ett Fortran huvudprogram anropa C/C++-kod, som automatiskt skulle välja C/C++ när Fortran-länken ska användas;
  • Hanteringen av CPPFLAGS förprocessorflaggor har ändrats. Medan Meson tidigare lagrade CPPFLAGS och språkspecifika kompileringsflaggor (CFLAGS, CXXFLAGS) separat, behandlas de nu oskiljaktigt och flaggorna som listas i CPPFLAGS används som en annan källa för kompileringsflaggor för språk som stöder dem;
  • Utdata från custom_target och custom_target[i] kan nu användas som argument i operationerna link_with och link_whole;
  • Generatorer har nu möjlighet att ange ytterligare beroenden med alternativet "beror på" (till exempel generator(program_runner, output: ['@[e-postskyddad]'], beror på: exe));
  • Lade till ett statiskt alternativ till find_library för att tillåta sökningen att endast inkludera statiskt länkade bibliotek;
  • För python.find_installation har möjligheten att bestämma närvaron av en given Python-modul för en specifik version av Python lagts till;
  • Lade till ny modul unstable-kconfig för att analysera kconfig-filer;
  • Lade till ett nytt kommando "subprojects foreach", som tar ett kommando med argument och kör det i alla underprojektkataloger;

Källa: opennet.ru

Lägg en kommentar