Ключовою метою розвитку 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