Izdaja sistema za gradnjo Meson 1.3

Objavljena je bila izdaja sistema za gradnjo Meson 1.3.0, ki se uporablja za gradnjo projektov, kot so X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME in GTK. Koda Meson je napisana v Pythonu in je licencirana pod licenco Apache 2.0.

Ključni razvojni cilj podjetja Meson je zagotoviti visokohitrosten proces sestavljanja v kombinaciji s priročnostjo in enostavnostjo uporabe. Namesto make graditev privzeto uporablja komplet orodij Ninja, vendar je mogoče uporabiti tudi druga ozadja, kot sta xcode in VisualStudio. Sistem ima vgrajen upravljalnik odvisnosti za več platform, ki vam omogoča uporabo Mesona za izdelavo paketov za distribucije. Pravila sestavljanja so postavljena v poenostavljenem domensko specifičnem jeziku, so dobro berljiva in razumljiva uporabniku (po zamisli avtorjev naj bi razvijalec porabil najmanj časa za pisanje pravil).

Podprto je navzkrižno prevajanje in gradnja na Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS in Windows z uporabo GCC, Clang, Visual Studio in drugih prevajalnikov. Projekte je mogoče graditi v različnih programskih jezikih, vključno s C, C++, Fortran, Javo in Rust. Podprt je inkrementalni način gradnje, v katerem se znova zgradijo samo komponente, ki so neposredno povezane s spremembami, izvedenimi od zadnje gradnje. Meson se lahko uporablja za generiranje ponovljivih gradenj, kjer zagon gradnje v različnih okoljih povzroči popolnoma enake izvedljive datoteke.

Glavne novosti Meson 1.3:

  • Dodana možnost »werror: true« metodam preverjanja prevajalnika compiler.compiles(), compiler.links() in compiler.run(), ki obravnava opozorila prevajalnika kot napake (lahko se uporabi za preverjanje, ali je koda zgrajena brez opozoril ).
  • Dodana metoda has_define za preverjanje definicije simbola s predprocesorjem.
  • Funkciji configure_file() je bil dodan parameter macro_name, ki je dodal makro zaščito za dvojne povezave prek »#include« (»include guards«), zasnovan v slogu makrov v jeziku C (poenostavi ustvarjanje konfiguracijskih datotek z dinamičnim imena makrov).
  • V configure_file() je bil dodan nov izhodni format - JSON (»output_format: json«).
  • Parametroma c_std in cpp_std je dodana možnost uporabe seznamov vrednosti (na primer »default_options: 'c_std=gnu11,c11').
  • V modulih, ki uporabljajo CustomTarget za obdelavo datotek, je bila dodana možnost prilagajanja sporočil, ki jih izpiše pripomoček ninja.
  • Klic build_target "jar" je opuščen in namesto tega se priporoča klic "jar()".
  • Parameter 'env' je bil dodan metodi generator.process() za nastavitev spremenljivke okolja, prek katere bo generator obdelal vnos.
  • Pri podajanju ciljnih imen gradnje, povezanih z izvedljivimi datotekami, so pripone, kot je "izvedljivo('foo', 'main.c', name_suffix: 'bar')" dovoljene za ustvarjanje dodatnih izvedljivih datotek v istem imeniku.
  • Funkciji execuable() je bil dodan parameter »vs_module_defs« za uporabo def datoteke, ki definira seznam funkcij, posredovanih shared_module().
  • Dodan parameter 'default_options' funkciji find_program() za nastavitev privzetih možnosti za nadomestni podprojekt.
  • Dodana metoda fs.relative_to(), ki vrne relativno pot za prvi argument glede na drugega, če prva pot obstaja. Na primer, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Funkcijam install_data(), install_headers() in install_subdir() je bil dodan parameter following_symlinks; ko je nastavljen, sledijo simboličnim povezavam.
  • Metodi int.to_string() je bil dodan parameter »fill« za postopno polnjenje niza z začetnimi ničlami. Na primer, klic message(n.to_string(fill: 3)) za n=4 bo ustvaril niz "004".
  • Dodan nov cilj, clang-tidy-fix, ki določa izvajanje pripomočka clang-tidy z zastavico "-fix".
  • Možnost podajanja pripone (TARGET_SUFFIX) cilja sestavljanja ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) je bila dodana ukazu za prevajanje.
  • Dodana spremenljivka okolja MESON_PACKAGE_CACHE_DIR za preglasitev poti do predpomnilnika paketov (podprojekti/packagecache), na primer, kar vam omogoča uporabo skupnega predpomnilnika v več projektih.
  • Dodan ukaz "meson setup --clearcache" za brisanje obstojnega predpomnilnika.
  • Podpora za ključno besedo »required« je bila dodana vsem metodam preverjanja prevajalnika »has_*«, na primer namesto »assert(cc.has_function('some_function'))« lahko zdaj podate »cc.has_function('some_function' , obvezno: res)«.
  • Funkcijam shared_library(), static_library(), library() in shared_module() je bila dodana nova ključna beseda rust_abi, ki jo je treba uporabiti namesto zastarele rust_crate_type.

Vir: opennet.ru

Dodaj komentar