Доступны системы сборки CMake 3.27.0 и Meson 1.2

Опубликован релиз кроссплатформенного открытого генератора сценариев сборки CMake 3.27, выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. CMake примечателен предоставлением простого языка сценариев, средствами расширения функциональности через модули, поддержкой кэширования, наличием инструментов для кросс-компиляции, поддержкой генерации файлов сборки для широкого спектра систем сборки и компиляторов, наличием утилит ctest и cpack для определения сценариев тестирования и сборки пакетов, утилитой cmake-gui для интерактивной настройки параметров сборки. Код CMake написан на языке C++ и распространяется под лицензией BSD.

Основные улучшения:

  • В утилиту 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

© OpenNet