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

CMake Новости

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

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

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

  • Добавлен новый генератор сборочных сценариев на базе инструментария Ninja – “Ninja Multi-Config”, отличающийся от старого генератора возможностью обработки за раз сразу нескольких сборочных конфигураций.
  • В генераторе сборочных сценариев для Visual Studio появилась возможность определения файлов с исходными текстами, привязанных к каждой конфигурации (per-config sources).
  • В средства для настройки параметров компилятора (Compile Features) добавлена возможность задания мета-параметров для CUDA (“cuda_std_03”, “cuda_std_14” и т.п).
  • Добавлены переменные “CMAKE_CUDA_RUNTIME_LIBRARY” и “CUDA_RUNTIME_LIBRARY” для выбора типа runtime-библиотек при использовании CUDA.
  • Добавлен модуль “FindCUDAToolkit” для определения доступного в системе инструментария CUDA без включения языка CUDA.
  • В утилиту cmake добавлена команда “–debug-find” для вывода дополнительной читаемой диагностики при выполнении операций поиска. Для аналогичных целей добавлена переменная CMAKE_FIND_DEBUG_MODE.
  • В модуль “FindCURL” добавлена поддержка поиска инструментария CURL при помощи генерируемых cmake файлов конфигурации “CURLConfig.cmake”. Для отключения указанного поведения предусмотрена переменная CURL_NO_CURL_CMAKE.
  • В модуль FindPython добавлена возможность поиска компонентов Python в виртуальных окружениях, управляемых при помощи “conda”.
  • В утилиту ctest добавлены опции “–no-tests=[error|ignore]” для определения поведения в случае отсутствия тестов и “–repeat” для задания условий повторного запуска тестов (until-pass, after-timeout).
  • Обеспечен перенос свойств сборочной цели INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES и INTERFACE_LINK_DEPENDS в числе внутренних зависимостей статически собираемых библиотек.
  • При использовании инструментария MinGW по умолчанию отключён поиск DLL-файлов командой find_library (вместо этого по умолчанию осуществляется попытка импортирования библиотек “.dll.a”).
  • Логика выбора утилиты ninja в генераторе Ninja теперь не зависит от названия исполняемого файла – используется первая попавшаяся утилита ninja-build, ninja или samu, найденная в путях, определённых через переменную окружения PATH.
  • В утилиту cmake добавлена команда “-E rm”, которую можно использовать для удаления файлов и каталогов вместо раздельных команд “-E remove” и “-E remove_directory”.
Publisher
Оцените автора
AsaDagar
Добавить комментарий