Основные улучшения:
- В утилиту cmake встроен интерактивный отладчик для языка сценариев, вызываемый при указании опции «—debugger.
- В генераторы сборочных сценариев для Visual Studio 2015 и более новых версий в переменной CMAKE_GENERATOR_PLATFORM добавлена поддержка поля «version=» для выбора верcии Windows SDK.
- Для разделяемых библиотек, собираемых для платформы macOS, реализована возможность создания tbd-файлов (Text-Based Definition) с данными о библиотеке.
- Реализовано свойство «SKIP_LINTING» для отключения проверки кода для определённых исходных файлов.
- Для генераторов добавлен флаг «COMPILE_ONLY», при котором выполняется только компиляция без динамического связывания.
- Объявлены устаревшими и будут удалены в одном из следующих выпусков компоненты для обеспечения совместимости с версиям CMake старше 3.5.
- Удалён модуль FindCUDA, который был объявлен устаревшим в выпуске CMake 3.10. Проекты, завязанные на FindCUDA, рекомендовано перевести на встроенные в CMake средства для поддержки CUDA.
- Удалены модули FindPythonInterp и FindPythonLibs, объявленные устаревшими в выпуске CMake 3.12. Вместо них следует использовать модули FindPython3, FindPython2 или FindPython.
- При выполнении команды «cmake —build $dir —verbose» обеспечен вывод рабочего каталога и опций командной строки, используемых для сборки.
Дополнительно можно отметить выпуск сборочной системы Meson 1.2.0, которая используется для сборки таких проектов, как X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME и GTK. Код Meson написан на языке Python и поставляется под лицензией Apache 2.0. Поддерживается кросс-компиляция и сборка в Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS и Windows с использованием GCC, Clang, Visual Studio и других компиляторов. Возможна сборка проектов на различных языках программирования, включая C, C++, Fortran, Java и Rust. Вместо утилиты make при сборке по умолчанию применяется инструментарий Ninja, но возможно применение и других бэкендов, таких как xcode и VisualStudio.
В систему встроен многоплатформенный обработчик зависимостей, позволяющий использовать Meson для сборки пакетов для дистрибутивов. Правила сборки задаются на упрощённом предметно-ориентированном языке, отличаются хорошей читаемостью и понятны пользователю (по задумке авторов разработчик должен тратить минимум времени на написание правил). Поддерживается инкрементальный режим сборки, при котором пересобираются только компоненты, напрямую связанные с изменениями, внесёнными с момента прошлой сборки. Meson можно использовать для формирования повторяемых сборок, при которых запуск сборки в разных окружениях приводит к генерации полностью идентичных исполняемых файлов.
Основные новшества Meson 1.2:
- Добавлена поддержка инструментариев Metrowerks Embedded для архитектур PowerPC и ARM.
- Добавлен метод str.splitlines() для разделения строки на массив из строк.
- Добавлена поддержка вложенного вызова генераторов, например, «gen2.process(gen1.process(‘input.txt’))».
- В блок declare_dependency добавлена поддержка ключевого слова extra_files для добавления дополнительных файлов к сборочной цели.
- В команду «meson setup» добавлена опция ‘—genvslite’ для упрощения переключения между сборочными конфигурациями для среды Visual Studio.
- В gnome.generate_gir() добавлена поддержка аргумента env для установки переменных окружения.
- Расширены сохраняемые для инроспекции данные: в intro-compilers.json перечислены используемые компиляторы, в intro-machines.json добавлена информация о хостовой, сборочной и целевой системах, в
intro-dependencies.json отражены сведения о внутренних зависимостях, в intro-targets.json указаны зависимости, vs_module_defs, win_subsystem и параметры компоновщика. - В дополнение к свойству system добавлены свойства kernel и subsystem для более точной идентификации системы.
- Разрешено использование словарей для опций default_options и override_options (например, можно указывать «default_options : {‘key’: ‘value’}» вместо «default_options : [‘key=value’]»).
- Добавлены параметры rust.bindgen и bindgen_clang_arguments для передачи дополнительных аргументов компиляторам rustc и clang.
- Разрешено использование маски для выбора выполняемых тестов, например, для запуска тестов, начинающихся на слово basic, можно указать «meson test basic*».
Источник: http://www.opennet.ru/opennews/art.shtml?num=59481