Релиз сборочной системы CMake 4.0.0

Представлен релиз кроссплатформенного открытого генератора сценариев сборки 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) в сомом проекта, например, для настройки политики версий в проектах, не предусматривающих такую возможность.
  • В выражение генератора “$” добавлена операция “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__LINK_MODE, CMAKE__DEVICE_LINK_MODE,[[https://cmake.org/cmake/help/v4.0/variable/CMAKE_MSVC_RUNTIME_CHECKS.html#variable:CMAKE_MSVC_RUNTIME_CHECKS 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.
Release. Ссылка here.