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

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

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

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

  • В команду cmake добавлены опции »-S source_dir» и »-B build_dir» для определения путей к каталогу с исходными текстами и каталогу для сборки;
  • Добавлены новые команды «target_link_directories ()», «target_link_options ()» и «target_link_libraries ()» для определения каталогов, опций и местоположения библиотек, используемых в операциях компоновки;
  • В команду «install (TARGETS)» добавлена поддержка установки целевых файлов, созданных вне текущего каталога;
  • В генератор «Green Hills MULTI» добавлена возможность выбора платформы, архитектуры и инструментария;
  • В генераторы для Visual Studio 2010 и более новых версий добавлена опция «INTERPROCEDURAL_OPTIMIZATION» и связанный с ней модуль «CheckIPOSupported» для управления применением межпроцедурных оптимизаций. Добавлены свойства «VS_DEBUGGER_COMMAND_ARGUMENTS» и «VS_DEBUGGER_ENVIRONMENT» для определения аргументов командной строки и переменных окружения для управления отладочными режимами в генераторах для Visual Studio;
  • На платформе Windows обеспечена возможность использования команды «cmake -E create_symlink»;
  • В команде «option ()» теперь учитывается наличие нормальных переменных с тем же именем (они теперь не переопределяются в кэше и настройках);
  • В команде «target_sources ()» обработка относительных путей к исходным текстам теперь производится относительно текущего каталога с исходными текстами;
  • Добавлено правило «CMP0076», определяющее требования к обеспечению обратной совместимости в случаях, когда необходимо сохранение старого поведения.

© OpenNet