Meson build system release 0.51

offentliggjort bygge systemudgivelse Meson 0.51, 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).

Krydskompilering og bygning på Linux, macOS og Windows ved hjælp af GCC, Clang, Visual Studio og andre compilere understøttes. 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.51:

  • Tilføjet støtte til gennemsigtig opbygning af eksisterende projekter, der bruger CMake build scripts. Meson kan nu direkte bygge simple underprojekter (såsom enkeltbiblioteker) ved hjælp af CMake-modulet, svarende til standardunderprojekter (inklusive CMake-underprojekter kan placeres i underprojektbiblioteket);
  • For alle brugte compilere er foreløbig test inkluderet gennem samling og udførelse af simple testfiler (sanity check), ikke begrænset til test af brugerspecificerede flag for cross-compilere (fra nu af kontrolleres også compilere, der er native til den nuværende platform) .
  • Tilføjet muligheden for at definere kommandolinjeindstillinger, der bruges under krydskompilering, med binding ved at angive et platformpræfiks før indstillingen. Tidligere dækkede kommandolinjeindstillinger kun native builds og kunne ikke specificeres til krydskompilering. Kommandolinjeindstillinger gælder nu, uanset om du bygger native eller krydskompilerer, hvilket sikrer, at native og cross-builds producerer identiske resultater;
  • Tilføjet muligheden for at angive flaget "--cross-file" mere end én gang på kommandolinjen for at vise flere krydsfiler;
  • Tilføjet understøttelse af ICL-kompileren (Intel C/C++ Compiler) til Windows-platformen (ICL.EXE og ifort);
  • Tilføjet indledende værktøjssæt-understøttelse til CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
  • Metoden "get_variable" er blevet tilføjet til objektet "afhængighed", som giver dig mulighed for at få værdien af ​​en variabel uden at tage hensyn til typen af ​​den aktuelle afhængighed (f.eks. dep.get_variable(pkg-config : 'var- navn', cmake : 'COP_VAR_NAME));
  • Tilføjet et nyt argument for målsamlingsoptioner, "link_language", for eksplicit at angive det sprog, der bruges, når linkeren kaldes. For eksempel kunne et Fortran-hovedprogram kalde C/C++-kode, som automatisk vælger C/C++, når Fortran-linkeren skal bruges;
  • Håndteringen af ​​CPPFLAGS præprocessorflag er blevet ændret. Mens Meson tidligere har gemt CPPFLAGS og sprogspecifikke kompileringsflag (CFLAGS, CXXFLAGS) separat, behandles de nu uadskilleligt, og flagene, der er opført i CPPFLAGS, bruges som en anden kilde til kompileringsflag for sprog, der understøtter dem;
  • Outputtet af custom_target og custom_target[i] kan nu bruges som argumenter i link_with og link_whole operationerne;
  • Generatorer har nu mulighed for at angive yderligere afhængigheder ved at bruge "depends"-indstillingen (f.eks. generator(program_runner, output: ['@[e-mail beskyttet]'], afhænger af: exe));
  • Tilføjet en statisk mulighed til find_library for at tillade søgningen kun at inkludere statisk linkede biblioteker;
  • For python.find_installation er muligheden for at bestemme tilstedeværelsen af ​​et givet Python-modul til en specifik version af Python blevet tilføjet;
  • Tilføjet nyt modul unstable-kconfig til at analysere kconfig-filer;
  • Tilføjet en ny kommando "subprojects foreach", som tager en kommando med argumenter og kører den i alle underprojektmapper;

Kilde: opennet.ru

Tilføj en kommentar