Vydání systému sestavení Meson 1.3

Bylo zveřejněno vydání sestavení systému Meson 1.3.0, který se používá k sestavování projektů jako X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME a GTK. Kód Meson je napsán v Pythonu a je licencován pod licencí Apache 2.0.

Klíčovým cílem vývoje společnosti Meson je poskytnout vysokorychlostní proces montáže v kombinaci s pohodlím a snadným použitím. Místo make používá sestavení ve výchozím nastavení sadu nástrojů Ninja, ale lze použít i jiné backendy, jako je xcode a VisualStudio. Systém má vestavěný obslužný program závislostí pro více platforem, který vám umožňuje používat Meson k vytváření balíčků pro distribuce. Pravidla sestavení jsou nastavena ve zjednodušeném doménově specifickém jazyce, jsou dobře čitelná a uživatelsky srozumitelná (podle představy autorů by měl vývojář věnovat psaní pravidel minimum času).

Je podporována křížová kompilace a sestavení na Linuxu, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS a Windows pomocí GCC, Clang, Visual Studio a dalších kompilátorů. Je možné stavět projekty v různých programovacích jazycích, včetně C, C++, Fortran, Java a Rust. Je podporován režim přírůstkového sestavení, ve kterém jsou znovu sestavovány pouze komponenty, které přímo souvisí se změnami provedenými od posledního sestavení. Meson lze použít ke generování opakovatelných sestavení, kde spuštění sestavení v různých prostředích vede ke zcela identickým spustitelným souborům.

Hlavní inovace Meson 1.3:

  • Přidána možnost „werror: true“ do kontrolních metod kompilátoru kompilátor.compiles(), kompilátor.links() a kompilátor.run(), která považuje varování kompilátoru za chyby (lze použít ke kontrole, zda je kód sestaven bez varování ).
  • Přidána metoda has_define pro kontrolu definice symbolu preprocesorem.
  • Do funkce configure_file() byl přidán parametr macro_name, který přidává ochranu maker pro dvojitá připojení prostřednictvím „#include“ („include guards“), navrženého ve stylu maker v jazyce C (zjednodušuje vytváření konfiguračních souborů pomocí dynamických názvy maker).
  • Do configure_file() byl přidán nový výstupní formát - JSON ("output_format: json").
  • Přidána možnost používat seznamy hodnot pro parametry c_std a cpp_std (například „default_options: 'c_std=gnu11,c11′’).
  • V modulech, které používají CustomTarget ke zpracování souborů, byla přidána možnost přizpůsobit výstup zpráv pomocí nástroje ninja.
  • Build_target "jar" bylo zastaralé a místo toho se doporučuje volání "jar()".
  • Do metody generator.process() byl přidán parametr 'env' pro nastavení proměnné prostředí, jejímž prostřednictvím bude generátor zpracovávat vstup.
  • Při zadávání názvů cílů sestavení spojených se spustitelnými soubory mohou přípony jako "executable('foo', 'main.c', name_suffix: 'bar')" generovat další spustitelné soubory ve stejném adresáři.
  • Do funkce exectuable() byl přidán parametr „vs_module_defs“, aby bylo možné použít soubor def, který definuje seznam funkcí předávaných do shared_module().
  • Přidán parametr 'default_options' do funkce find_program() pro nastavení výchozích možností pro záložní podprojekt.
  • Přidána metoda fs.relative_to(), která vrací relativní cestu pro první argument vzhledem k druhému, pokud první cesta existuje. Například "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Do funkcí install_data(), install_headers() a install_subdir() byl přidán parametr following_symlinks; pokud je nastaven, následují symbolické odkazy.
  • Do metody int.to_string() byl přidán parametr „fill“, který postupně vyplní řetězec úvodními nulami. Například volání message(n.to_string(fill: 3)) pro n=4 vytvoří řetězec "004".
  • Přidán nový cíl, clang-tidy-fix, který určuje spuštění nástroje clang-tidy s příznakem "-fix".
  • Do příkazu kompilace byla přidána možnost zadat příponu (TARGET_SUFFIX) cíle sestavení ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]).
  • Byla přidána proměnná prostředí MESON_PACKAGE_CACHE_DIR, která například přepíše cestu k mezipaměti balíčků (podprojekty/paměť balíčků), což vám umožní používat sdílenou mezipaměť v několika projektech.
  • Přidán příkaz "meson setup --clearcache" pro vymazání trvalé mezipaměti.
  • Podpora pro klíčové slovo „required“ byla přidána do všech metod kontroly kompilátoru „has_*“, například místo „assert(cc.has_function('some_function'))“ můžete nyní zadat „cc.has_function('some_function' , povinné: true)“.
  • Do funkcí shared_library(), static_library(), library() a shared_module() bylo přidáno nové klíčové slovo rust_abi, které by se mělo používat místo zastaralého rust_crate_type.

Zdroj: opennet.ru

Přidat komentář