Система сборки CMake 4.0.0: Новые функции и изменения в важном обновлении

28 марта 2025 года был выпущен открытый проект системы сборки CMake версии 4.0.0. Это программное обеспечение служит альтернативой Autotools и используется в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. Исходный код CMake написан на C++ и доступен на GitHub под лицензией BSD. Релиз версии CMake 3.0.0 состоялся в декабре 2018 года.

Версии CMake 4.0.0 можно загрузить для систем Unix/Linux, macOS, Windows и SunOS.

Согласно данным OpenNET, проект CMake интересен тем, что предлагает простой язык сценариев, расширяемость через модули, возможность кэширования, поддержку кросс-компиляции, генерацию файлов сборки для различных систем и компиляторов, а также утилиты ctest и cpack для тестирования и создания пакетов. Утилита cmake-gui позволяет интерактивно настраивать параметры сборки.

Среди основных обновлений и новшеств в CMake 4.0.0 можно выделить:

– прекращение совместимости с версиями CMake ниже 3.5. Теперь при обращении к неподдерживаемым версиям через функции cmake_minimum_required() и cmake_policy() будет выводиться ошибка;
– введение переменной окружения «CMAKE_POLICY_VERSION_MINIMUM», что позволяет указать минимальную версию CMake, необходимую для сборки проекта. Это упрощает настройку политик версий без изменения вызовов в самом проекте;
– добавление операции «NATIVE_PATH» в генераторы «$<PATH>», которая позволяет конвертировать пути файлов из формата CMake в формат операционной системы;
– на macOS, если в каталоге «/usr/bin» найден компилятор при использовании генераторов Ninja и Makefile, он не будет изменяться и останется без привязки к Xcode. Кроме того, выбор SDK и передача флага «-isysroot» компилятору по умолчанию отменены;
– введение свойства LINK_WARNING_AS_ERROR, которое трактует предупреждения компоновщика как ошибки, с возможностью отключения через опцию командной строки «-link-no-warning-as-error»;
– в утилиту cmake добавлена опция «-project-file» для указания альтернативного имени файла CMakeLists.txt;
– в генератор CPack добавлена функция создания несжатых tar-архивов;
– новые свойства: DEBUGGER_WORKING_DIRECTORY и VS_SOLUTION_ITEMS для прикрепления файлов к .sln в Visual Studio;
созданы сборки CMake для SunOS для архитектур sparc64 и x86_64.