Meson build system release 1.3

Udgivelsen af ​​Meson 1.3.0 byggesystemet er blevet offentliggjort, 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 er licenseret under Apache 2.0-licensen.

Det vigtigste udviklingsmål for Meson er at levere en højhastigheds monteringsproces kombineret med bekvemmelighed og brugervenlighed. I stedet for at lave bruger buildet Ninja-værktøjssættet som standard, men andre backends såsom xcode og VisualStudio kan også bruges. Systemet har en indbygget multi-platform afhængighedshandler, der giver dig mulighed for at bruge Meson til at bygge pakker til distributioner. Samlingsregler er sat i et forenklet domænespecifikt sprog, de er letlæselige og forståelige for brugeren (ifølge forfatternes idé skal udvikleren bruge minimum tid på at skrive regler).

Krydskompilering og bygning på Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, 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. En 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 fuldstændig identiske eksekverbare filer.

Vigtigste innovationer i Meson 1.3:

  • Tilføjede muligheden "werror: true" til compiler check-metoderne compiler.compiles(), compiler.links() og compiler.run(), som behandler compileradvarsler som fejl (kan bruges til at kontrollere, at koden er bygget uden advarsler ).
  • Tilføjet has_define-metode til at kontrollere symboldefinition af præprocessor.
  • Parameteren macro_name er blevet tilføjet til funktionen configure_file() og tilføjer makrobeskyttelse for dobbeltforbindelser gennem "#include" ("inkluder vagter"), designet i stil med makroer på C-sproget (som forenkler oprettelsen af ​​konfigurationsfiler med dynamisk makronavne).
  • Et nyt outputformat er blevet tilføjet til configure_file() - JSON ("output_format: json").
  • Tilføjet muligheden for at bruge værdilister til parametrene c_std og cpp_std (for eksempel "default_options: 'c_std=gnu11,c11′').
  • I moduler, der bruger CustomTarget til at behandle filer, er muligheden for at tilpasse beskeder, der udlæses af ninja-værktøjet, blevet tilføjet.
  • build_target "jar" er blevet forældet, og "jar()" kaldet anbefales i stedet.
  • Parameteren 'env' er blevet tilføjet til generator.process()-metoden for at indstille miljøvariablen, som generatoren vil behandle input gennem.
  • Når du angiver build-målnavne forbundet med eksekverbare filer, tillades suffikser såsom "executable('foo', 'main.c', name_suffix: 'bar')" til at generere yderligere eksekverbare filer i samme mappe.
  • Tilføjede "vs_module_defs"-parameteren til funktionen exectuable() for at bruge en def-fil, der definerer listen over funktioner, der sendes til shared_module().
  • Tilføjet 'default_options'-parameter til find_program()-funktionen for at indstille standardindstillinger for fallback-underprojekt.
  • Tilføjet fs.relative_to() metode, som returnerer den relative sti for det første argument i forhold til det andet, hvis den første sti findes. For eksempel "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Følgende_symlinks-parameter er blevet tilføjet til funktionerne install_data(), install_headers() og install_subdir(); når den er indstillet, følges symbolske links.
  • En "fill"-parameter er blevet tilføjet til int.to_string()-metoden for trinvist at udfylde strengen med indledende nuller. For eksempel vil kald af message(n.to_string(fill: 3)) for n=4 producere strengen "004".
  • Tilføjet et nyt mål, clang-tidy-fix, der specificerer at køre clang-tidy-værktøjet med flaget "-fix".
  • Muligheden for at angive suffikset (TARGET_SUFFIX) for samlingsmålet ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) er blevet tilføjet til kompileringskommandoen.
  • Tilføjet miljøvariabel MESON_PACKAGE_CACHE_DIR for at tilsidesætte stien til pakkecachen (subprojects/packagecache), for eksempel, hvilket giver dig mulighed for at bruge en delt cache i flere projekter.
  • Tilføjet "meson setup --clearcache" kommando for at rydde vedvarende cache.
  • Understøttelse af det "påkrævede" nøgleord er blevet tilføjet til alle "has_*"-kompilerkontrolmetoder, for eksempel, i stedet for "assert(cc.has_function('some_function'))" kan du nu angive "cc.has_function('some_function' , påkrævet: sand)”.
  • Et nyt nøgleord, rust_abi, er blevet tilføjet til funktionerne shared_library(), static_library(), library() og shared_module(), som skal bruges i stedet for den forældede rust_crate_type.

Kilde: opennet.ru

Tilføj en kommentar