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

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

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

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

  • В генератор сборочных файлов Ninja добавлена поддержка компиляторов TI C/C++;
  • В генераторах для Visual Studio появилась возможность использования условного выражения COMPILE_LANGUAGE при определении значений COMPILE_DEFINITIONS, INCLUDE_DIRECTORIES, COMPILE_OPTIONS и file (GENERATE). В генераторе Xcode поддержка условного выражения COMPILE_LANGUAGE обеспечена для COMPILE_DEFINITIONS и INCLUDE_DIRECTORIES (в COMPILE_OPTIONS и file (GENERATE) уже поддерживалась ранее);
  • Компанды add_library () и и add_executable () теперь могут вызываться без наличия исходных текстов с расчётом, что код будет добавлен позднее при помощи команды target_sources ();
  • В команду target_compile_definitions () добавлено свойство INTERFACE_COMPILE_DEFINITIONS, в команду target_compile_features () — INTERFACE_COMPILE_FEATURES, в target_compile_options () — INTERFACE_COMPILE_OPTIONS, в target_include_directories () — INTERFACE_INCLUDE_DIRECTORIES, в target_sources () — INTERFACE_SOURCES, в target_link_libraries () — INTERFACE_LINK_LIBRARIES;
  • В свойстве исходных файлов «COMPILE_DEFINITIONS» добавлена поддержка выражений генератора;
  • Свойство исходных файлов COMPILE_OPTIONS добавлено в список опций, передаваемых компилятору;
  • При использовании свойств AUTOMOC или AUTOUIC, CMake теперь параллельно запускает несколько процессов moc или uic для сокращения времени сборки. Число процессов определяется через переменную CMAKE_AUTOGEN_PARALLEL и свойство AUTOGEN_PARALLEL (по умолчанию выставляются в значения, соответствующие числу CPU).

© OpenNet