Представлен релиз кроссплатформенного открытого генератора сценариев сборки CMake 4.0.0, выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. Код CMake написан на языке C++ и распространяется под лицензией BSD.
CMake примечателен предоставлением простого языка сценариев, средствами расширения функциональности через модули, поддержкой кэширования, наличием инструментов для кросс-компиляции, поддержкой генерации файлов сборки для широкого спектра систем сборки и компиляторов, наличием утилит ctest и cpack для определения сценариев тестирования и сборки пакетов, утилитой cmake-gui для интерактивной настройки параметров сборки.
Основные изменения:
- Прекращена совместимость с версиями CMake до выпуска 3.5. При привязке к неподдерживаемым версиям в функциях cmake_minimum_required() и cmake_policy() теперь будет выводиться ошибка.
- Добавлена переменная окружения «CMAKE_POLICY_VERSION_MINIMUM» для переопределения минимальной версии CMake, функциональность которой необходима для сборки проекта. Добавленная переменная позволяет обойтись без изменения вызовов cmake_minimum_required(VERSION) и cmake_policy(VERSION) в самом проекте, например, для настройки политики версий в проектах, не предусматривающих такую возможность.
- В выражение генератора «$<PATH>» добавлена операция «NATIVE_PATH» для преобразования файлового пути из представления CMake (для разделения каталогов всегда используется «/»), в системный путь (в Unix-подобных системах используется «/», а в Windows — «\»).
- На платформе macOS при использовании генераторов сборочных сценариев на базе инструментария Ninja и генераторов Makefile, если в каталоге «/usr/bin» присутствует компилятор, то он отныне оставляется как есть, без привязки к компилятору в Xcode. При сборке для платформы macOS по умолчанию прекращён выбор SDK и передача компилятору флага «-isysroot» (SDK теперь выбирает сам компилятор, а не CMake).
- Добавлено свойство LINK_WARNING_AS_ERROR, при котором предупреждения компоновщика будут трактоваться как ошибки. Для отключения действия данного свойства добавлена опция командной строки «—link-no-warning-as-error».
- В утилиту cmake добавлена опция «—project-file» для задания альтернативного имени файла CMakeLists.txt.
- В генератор CPack добавлена возможность создания несжатых tar-архивов.
- В команду target_link_libraries() и переменные CMAKE_EXE_LINKER_FLAGS*, CMAKE_SHARED_LINKER_FLAGS*, CMAKE_MODULE_LINKER_FLAGS* добавлена поддержка префикса «LINKER:».
- Добавлены новые переменные:
- CMAKE_EXECUTE_PROCESS_COMMAND_ERROR_IS_FATAL,
- CMAKE_<LANG>_LINK_MODE,
- CMAKE_<LANG>_DEVICE_LINK_MODE,
- CMAKE_LINK_WARNING_AS_ERROR,
- CMAKE_MSVC_RUNTIME_CHECKS,
- CMAKE_DEBUGGER_WORKING_DIRECTORY,
- CMAKE_XCODE_SCHEME_LLDB_INIT_FILE,
- CMAKE_XCODE_SCHEME_TEST_CONFIGURATION.
- Добавлены новые свойства: DEBUGGER_WORKING_DIRECTORY и VS_SOLUTION_ITEMS (для прикрепления файлов к .sln для Visual Studio).
- Обеспечено формирование готовых сборок CMake для SunOS для архитектур sparc64 и x86_64.
Источник: opennet.ru
