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

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

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

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

  • В генераторы сборочных сценариев для Visual Studio 2010+ добавлена поддержка сборки проектов на языке CUDA (ранее CUDA поддерживался только генераторами Makefile и Ninja);
  • CMake теперь учитывает особенности стандартов Си/Си++ и связанные с ними мета-функции для компиляторов, вызываемых при указании идентификаторов «Cray», «PGI» и «XL»;
  • Представлен модуль «CheckIPOSupported», предназначенный для проверки обеспечения поддержки в инструментарии межпроцедурных оптимизаций (IPO). IPO поддерживаются для компиляторов GCC и Clang;
  • В генераторе для Visual Studio 14 2015 учтены изменения инструментария v140, внесённые в очередном обновлении VS 2015. В частности изменён набор значений для настройки GenerateDebugInformation, используемой при включении отладочного режима (-DEBUG) в компоновщике;
  • В генераторы для Visual Studio 2010+ добавлена поддержка языка «ASM_NASM», включаемая при установке «nasm»;
  • В генераторе «Xcode» появилась поддержка Xcode 9 и возможность создания схем сборки для Xcode, активируемая через переменную «CMAKE_XCODE_GENERATE_SCHEME»;
  • Команда add_library () с опцией IMPORTED теперь может использоваться для библиотек объектов (Object Librarie). В команду install (TARGETS) добавлена опция OBJECTS» для указания пути для установки библиотек объектов. В команду install (EXPORT) добавлена поддержка экспорта библиотек объектов;
  • Для библиотек объектов реализовано свойство CUDA_PTX_COMPILATION, обеспечивающее компиляцию в файлы .ptx, вместо обычных объектных файлов;
  • Добавлено свойство BUILD_WITH_INSTALL_NAME_DIR и связанная с ним одноимённая переменная для управления включением свойства INSTALL_NAME_DIR для исполняемых файлов в сборочном дереве;
  • Добавлен модуль GoogleTest, предоставляющий средства для использования функции gtest_add_tests (), независимо от модуля FindGTest;
  • Файлы с исходными текстами в зависимых сборках теперь компилируются без ожидания окончания связывания других зависимостей;
  • В команды add_custom_command () и file (GENERATE) добавлена поддержка выражений генератора и свойств TARGET_OBJECTS.

© OpenNet