Ключавой мэтай развіцця Meson з'яўляецца забеспячэнне высокай хуткасці зборачнага працэсу ў спалучэнні з зручнасцю і прастатой выкарыстання. Замест утыліты make пры зборцы па змаўчанні прымяняецца інструментарый.
Падтрымліваецца крос-кампіляцыя і зборка ў Linux, macOS і Windows з выкарыстаннем GCC, Clang, Visual Studio і іншых кампілятараў. Магчымая зборка праектаў на розных мовах праграмавання, у тым ліку C, C++, Fortran, Java і Rust. Падтрымліваецца інкрыментальны рэжым зборкі, пры якім перазбіраюцца толькі кампаненты, напрамую звязаныя са зменамі, унесенымі з моманту мінулай зборкі. Meson можна выкарыстоўваць для фармавання паўтаральных зборак, пры якіх запуск зборкі ў розных асяродках прыводзіць да генерацыі цалкам ідэнтычных выкананых файлаў.
Асноўныя
- Дададзена падтрымка празрыстай зборкі існуючых праектаў, у якіх выкарыстоўваюцца зборачныя сцэнары CMake. Meson зараз напроста можа збіраць простыя субпраекты (такія як адзіночныя бібліятэкі) з выкарыстаннем модуля CMake па аналогіі са штатнымі субпраектамі (у тым ліку субпраекты на CMake могуць размяшчацца ў каталогу subprojects );
- Для ўсіх ужывальных кампілятараў уключана папярэдняе тэставанне праз зборку і выкананне найпростых тэставых файлаў (sanity check), не абмяжоўваючыся тэставаннем паказаных карыстачом сцягоў для крос-кампілятараў (з гэтага часу правяраюцца і родныя для бягучай платформы кампілятары).
- Дададзена магчымасць вызначэння опцый каманднага радка, якія выкарыстоўваюцца пры крос-кампіляцыі, з прывязкай праз заданне прэфікса платформы перад опцыяй. Раней опцыі каманднага радка ахоплівалі толькі зборку для роднай платформы і не маглі паказвацца для крос-кампіляцыі. Цяпер опцыі каманднага радка прымяняюцца незалежна ад таго ажыццяўляецца натыўная зборка або крос-кампіляцыя, гарантуючы, што для натыўных і крос-зборак будзе атрыманы ідэнтычны вынік;
- Дададзена магчымасць указання сцяга «—cross-file» больш за адзін раз у камандным радку для пералічэння некалькіх cross-файлаў;
- Дададзена падтрымка кампілятара ICL (Intel C/C++ Compiler) для платформы Windows (ICL.EXE і ifort);
- Дададзена пачатковая падтрымка інструментара для CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
- У аб'ект "dependency" дададзены метад "get_variable", які дазваляе атрымаць значэнне зменнай без уліку тыпу бягучай залежнасці (напрыклад, dep.get_variable(pkg-config : 'var-name', cmake : 'COP_VAR_NAME));
- Дададзены новы аргумент параметраў мэтавай зборкі - "link_language" для відавочнага вызначэння мовы, які выкарыстоўваецца пры выкліку кампаноўніка. Напрыклад, асноўная праграма на Fortran, можа выклікаць код на C/C++, што прывядзе да аўтаматычнага выбару C/C++, у той час як трэба выкарыстоўваць кампаноўнік ад Fortran;
- Зменена апрацоўка флагаў прэпрацэсара CPPFLAGS. Калі раней Meson асобна захоўваў CPPFLAGS і спецыфічныя для моў сцягі кампіляцыі (CFLAGS, CXXFLAGS), то зараз яны апрацоўваюцца непадзельна і пералічаныя ў CPPFLAGS сцягі прымяняюцца як яшчэ адна крыніца сцягоў кампіляцыі для моў, якія іх падтрымліваюць;
- Выснова custom_target і custom_target[i] зараз можа выкарыстоўвацца ў якасці аргументаў у аперацыях link_with і link_whole;
- У генератарах дададзена магчымасць задання дадатковых залежнасцяў пры дапамозе опцыі "depends" (напрыклад, generator(program_runner, output: ['@[электронная пошта абаронена]'], depends: exe));
- У find_library дададзена опцыя static для ахопу пошукам толькі статычна злучаных бібліятэк;
- Для python.find_installation дададзена магчымасць вызначэння наяўнасці зададзенага Python-модуля для канкрэтнай версіі Python;
- Дададзены новы модуль unstable-kconfig для разбору файлаў kconfig;
- Дададзена новая каманда "subprojects foreach", якая прымае каманду з аргументамі і запускае яе ва ўсіх каталогах субпраектаў;
Крыніца: opennet.ru