Релиз системы сборки CMake 3.18


Представлен релиз кроссплатформенного открытого генератора сценариев сборки CMake 3.18, выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. Код CMake написан на языке C++ и распространяется под лицензией BSD.

CMake примечателен предоставлением простого языка сценариев, средствами расширения функциональности через модули, минимальным числом зависимостей (нет привязки к M4, Perl или Python), поддержкой кэширования, наличием инструментов для кросс-компиляции, поддержкой генерации файлов сборки для широкого спектра систем сборки и компиляторов, наличием утилит ctest и cpack для определения сценариев тестирования и сборки пакетов, утилитой cmake-gui для интерактивной настройки параметров сборки.

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

  • Для языка CUDA обеспечена возможность сборки при помощи Clang на платформах, отличных от Windows. Раздельная компиляция CUDA пока не поддерживается ни на одной платформе.
  • Добавлена поддержка профилирования сценариев CMake, используя опции "--profiling-output" и "--profiling-format".
  • В команды add\_library() и add\_executable() добавлена поддержка создания целей-псевдонимов (Alias Targets), ссылающихся на неглобальные импортированные цели.
  • Добавлена команда cmake\_language() для мета-операций над скриптованными или встроенными командами.
  • Добавлена подкоманда file(CONFIGURE), аналогичная по функциональности команде configure\_file(), но с передачей содержимого в форме строки, а не ссылки на файл.
  • В команды find\_program(), find\_library(), find\_path() и find\_file() добавлена опция REQUIRED, предписывающая остановить обработку с ошибкой, если ничего не было найдено.
  • Добавлена переменная "CMAKE\_CUDA\_ARCHITECTURES" для указания архитектуры CUDA (устанавливается автоматически, если переменная "CMAKE\_CUDA\_COMPILER\_ID" принимает значение "NVIDIA").
  • Добавлено свойство "UNITY\_BUILD\_MODE" для выбора в генераторах алгоритма группировки включаемых исходных файлов (BATCH, GROUP).
  • Добавлен модуль CheckLinkerFlag для проверки корректности флагов компоновки.
  • Добавлены выражения генератора $‹DEVICE\_LINK:…›, $‹HOST\_LINK:…›, $‹LINK\_LANGUAGE:…› и $‹LINK\_LANG\_AND\_ID:…›.
  • В утилиту ctest добавлена переменная CTEST\_RESOURCE\_SPEC\_FILE для указания файла со спецификацией ресурсов.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53393


Comments 0