Релиз системы сборки CMake 3.11
Как сообщает opennet.ru доступен релиз кроссплатформенного открытого генератора сценариев сборки CMake 3.11, выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. Код CMake написан на языке C++ и распространяется под лицензией BSD.
CMake примечателен предоставлением простого языка сценариев, средствами расширения функциональности через модули, минимальным числом зависимостей (нет привязки к M4, Perl или Python), поддержкой кэширования, наличием инструментов для кросс-компиляции, поддержкой генерации файлов сборки для широкого спектра систем сборки и компиляторов, наличием утилит ctest и cpack для определения сценариев тестирования и сборки пакетов, утилитой cmake-gui для интерактивной настройки параметров сборки.
- В генератор сборочных файлов Ninja добавлена поддержка компиляторов
- В генераторах для 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).