Издание на системот за изградба на Meson 1.3

Објавено е издавањето на системот за градење Meson 1.3.0, кој се користи за изградба на проекти како што се X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME и GTK. Месон кодот е напишан во Python и е лиценциран под лиценцата Apache 2.0.

Клучната развојна цел на Meson е да обезбеди процес на склопување со голема брзина во комбинација со практичност и леснотија на користење. Наместо марка, конструкцијата стандардно го користи комплетот со алатки Ninja, но може да се користат и други задни делови како што се xcode и VisualStudio. Системот има вграден управувач за зависност од повеќе платформи кој ви овозможува да користите Meson за да изградите пакети за дистрибуции. Правилата за склопување се поставени на поедноставен јазик специфичен за доменот, тие се добро читливи и разбирливи за корисникот (според идејата на авторите, развивачот треба да потроши минимум време за пишување правила).

Поддржано е вкрстено компајлирање и градење на Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS и Windows користејќи GCC, Clang, Visual Studio и други компајлери. Можно е да се градат проекти на различни програмски јазици, вклучувајќи C, C++, Fortran, Java и Rust. Поддржан е режим на постепена градба, во кој се обновуваат само компонентите што се директно поврзани со промените направени од последната изработка. Meson може да се користи за генерирање на повторливи изданија, каде што извршувањето на изградбата во различни средини резултира со целосно идентични извршни датотеки.

Главните иновации на Meson 1.3:

  • Додадена е опцијата „погрешно: точно“ на методите за проверка на компајлерот compiler.compiles(), compiler.links() и compiler.run(), која ги третира предупредувањата на компајлерите како грешки (може да се користи за да се провери дали кодот е изграден без предупредувања ).
  • Додаден е метод has_define за проверка на дефиницијата на симболот од предпроцесорот.
  • Параметарот macro_name е додаден во функцијата configure_file(), додавајќи макро заштита за двојни врски преку „#include“ („include guards“), дизајниран во стилот на макроа на јазикот C (поедноставувајќи го создавањето на конфигурирани датотеки со динамична макро имиња).
  • Додаден е нов излезен формат во configure_file() - JSON („излезен_формат: json“).
  • Додадена е способност да се користат списоци со вредности на параметрите c_std и cpp_std (на пример, „default_options: „c_std=gnu11,c11′“).
  • Во модулите кои користат CustomTarget за обработка на датотеки, додадена е способноста за прилагодување на пораките што ги објавува нинџа алатката.
  • build_target „jar“ е застарен и наместо тоа се препорачува повикот „jar()“.
  • Параметарот 'env' е додаден на методот generator.process() за да се постави променливата на околината преку која генераторот ќе обработува влез.
  • При одредување на имиња на цели за градба поврзани со извршни датотеки, на наставките како „извршна(„foo“, „main.c“, име_наставка: „лента“)“ им е дозволено да генерираат дополнителни извршни датотеки во истиот директориум.
  • Додаден е параметарот „vs_module_defs“ на функцијата exectuable() за да се користи датотеката def што ја дефинира листата на функции предадени на shared_module().
  • Додаден е параметар „default_options“ во функцијата find_program() за поставување на стандардните опции за резервниот потпроект.
  • Додаден е метод fs.relative_to(), кој ја враќа релативната патека за првиот аргумент, во однос на вториот, доколку постои првата патека. На пример, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Параметарот follow_symlinks е додаден на функциите install_data(), install_headers() и install_subdir(); кога е поставен, се следат симболичните врски.
  • Параметарот „fill“ е додаден на методот int.to_string() за постепено пополнување на низата со водечки нули. На пример, повикувањето порака(n.to_string(fill: 3)) за n=4 ќе ја произведе низата „004“.
  • Додадена е нова цел, clang-tidy-fix, која одредува водење на алатката clang-tidy со знаменцето „-fix“.
  • Способноста за одредување на наставката (TARGET_SUFFIX) на целта за склопување ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) е додадена во командата за компајлирање.
  • Додадена е променлива на опкружувањето MESON_PACKAGE_CACHE_DIR за префрлање на патеката до кешот на пакетот (подпроекти/пакет кеш), на пример, овозможувајќи ви да користите споделен кеш во неколку проекти.
  • Додадена е команда „meson setup --clearcache“ за чистење на постојаниот кеш.
  • Поддршката за клучниот збор „задолжителен“ е додадена на сите методи за проверка на компајлерот „has_*“, на пример, наместо „assert(cc.has_function('some_function'))“ сега можете да наведете „cc.has_function('some_function' , потребно: точно)“.
  • Нов клучен збор, rust_abi, е додаден во функциите shared_library(), static_library(), library() и shared_module(), кои треба да се користат наместо застарениот rust_crate_type.

Извор: opennet.ru

Додадете коментар