The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

12.08.2025 09:48

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

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

Основные изменения:

  • В cmake-configure-log обеспечен вывод событий из команд find_package(), find_path(), find_file(), find_library() и find_program() при их первом вызове, когда результат меняет статус с "не найден" на "найден".
  • В команду cmake_pkg_config() добавлена поддержка подкоманд IMPORT и POPULATE для работы с зависимостями на базе pkg-config.
  • Добавлена переменная CMAKE_FIND_REQUIRED, выставляющая режим REQUIRED в командах find_package(), find_path(), find_file(), find_library() и find_program(). Для игнорирования значения переменной в командах может применяться ключевое слово OPTIONAL.
  • В модулях FindBLAS и FindLAPACK реализована поддержка NVPL (NVIDIA Performance Libraries).
  • В операциях string(REGEX MATCHALL), string(REGEX REPLACE) и list(TRANSFORM REPLACE) реализована поддержка метки начала ("^") в регулярных выражениях.
  • Выражение генератора TARGET_PROPERTY теперь охватывает свойства LINK_LIBRARIES и INTERFACE_LINK_LIBRARIES.


  1. Главная ссылка к новости (https://www.kitware.com/cmake-...)
  2. OpenNews: Релиз сборочной системы CMake 4.0.0
  3. OpenNews: Выпуск сборочной системы Meson 1.7.0
  4. OpenNews: Компания Apple открыла код сборочной системы Swift Build
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63713-cmake
Ключевые слова: cmake
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (46) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:34, 12/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    В каком интересно месте он "простой языка сценариев"? По-моему он давно примкнул к тем кого должен был заменить
     
     
  • 2.2, Аноним (2), 10:38, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Тоже обратил внимание, что все альтернативы старому-доброму make почему-то сложнее и только продолжают бухнуть. Может конечно возможность выкачивать зависимости с гитхаба напрямую и есть хорошо, но вот эта вечная беготня с «да что перестроить уже, чтобы ты готовую либу всё же увидел» и жонглированием трудночитаемыми конфигами напрягает.
    А сколько дыр через все эти навороченные системы сборки пролезает...
     
     
  • 3.3, IMBird (ok), 10:39, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Крепитесь: всё чаще попадаются C/C++ проекты со сборочными скриптами на питоне.
     
     
  • 4.7, Аноним (7), 10:46, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так питон идеальный язык для быстрого написания скриптов. Разве не так? И да, meson открой для себя.
     
     
  • 5.10, Аноним (2), 10:48, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На мезоне сидят гтк, вяленд, системд и оригинальный ксорг, что как бы намекает.
     
  • 5.15, анонд (?), 11:15, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Версии сборочных системы не всегда совместимы как тотже Conan (1.x vs 2.x) в отличие от CMake
     
  • 4.8, Аноним (2), 10:46, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А почему не на расте?
     
     
  • 5.24, Аноним (24), 12:14, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А почему не на расте?

    Угадай с трех раз, на чем пишутся сборочные скрипты для проектов на расте ...

     
     
  • 6.30, Советский инженер (ok), 13:12, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    что там гадать.
    toml & rust (build.rs)
     
  • 4.14, анонд (?), 11:14, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    и Lua (xmake с xrepo в китайских проектах)
    Питон это Meson или Conan
     
  • 3.5, Аноним (7), 10:43, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >все альтернативы старому-доброму make

    Я тебе маленький секрет открою. На выходе cmake генерится старый добрый Makefile.

     
     
  • 4.12, Аноним (12), 11:03, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Да он CMake и не пользуется.

    И наверняка вообще имеет условное отношение к разработке на C или C++, ибо собирать сколь-нибудь большой проект на этих языках при помощи голого make - это чистый мазохизм. Коллеги тебе этого тупо не дадут сделать.

     
     
  • 5.26, Аноним (26), 12:45, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Эти коллеги в вкусно-и-точка скоро работать уйдут, т.к. иишка всех лоускилов выкидывает уже с рынка. Я вот стартап пилю и там только Make, т.к. это мегаудобно все вспомогательные действия держать в 1 месте а не плодить кучу мелких скриптов. И действия - любые, а не только предусмотренные авторами смаке. И качать зависимости можно хоть с гитхуба хоть откуда прозрачным способом и билдить их какой угодно сторонней системой сборки, просто сделав соответсвующий таргет. При этом собственно сборка всех с/с++ файлов проекта - 7 строк.
     
     
  • 6.28, Аноним (12), 13:00, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Эти коллеги в вкусно-и-точка скоро работать уйдут
    > Я вот стартап пилю

    Ну, то есть, на мороз пока выкинули только тебя. 😂 Стартап, лол...

    > все вспомогательные действия держать в 1 месте а не плодить кучу мелких скриптов

    И весь исходный код тоже в одном файле, надеюсь? 😂 Хотя, когда у тебя хэллоуворлд - это не проблема, так ведь?

    > И действия - любые, а не только предусмотренные авторами смаке

    А, ну понятно: еще один эксперт, который CMake в глаза не видел, рассказывает об его ограничениях. 🤦

    > И качать зависимости можно хоть с гитхуба хоть откуда прозрачным способом и билдить их какой угодно сторонней системой сборки, просто сделав соответсвующий таргет. При этом собственно сборка всех с/с++ файлов проекта - 7 строк.

    Ты не поверишь, но в CMake тоже так 🤯. Только вот работать оно будет на всех системах (даже Винде), а не только в юниксовом окружении.

     
     
  • 7.31, Аноним (26), 13:13, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну каг бе стратап зарабатывает уже неплохо, есть некоторый штат сотрудников, а я за CTO. Я заранее подготовился, а кого-то вот ждёт неприятный сюрприз. Кусочки кода, которые узко смотрящие кодеры могут писать, давно уже нейронка делает.

    > эксперт, который CMake в глаза не видел

    15 лет в IT за деньги, а так ещё больше.

    > даже Винде

    А мне не надо чтобы на венде работало (но там вообще-то есть линукс окружение и собрать можно если не лоускил или хотя бы дипсик осилил).

     
     
  • 8.37, Аноним (12), 13:24, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты уж определись, СТО ты или кодер-писатель make 128514 Жаль, что не на пози... текст свёрнут, показать
     
     
  • 9.44, Аноним (26), 13:58, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Тут некоторые жалуются мол синтаксис непонятный Чатик всё напишет если что-то н... текст свёрнут, показать
     
  • 4.16, анонд (?), 11:16, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    CMake использует Ninja (когда доступно)
     
  • 4.33, Советский инженер (ok), 13:17, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    я тебе маленький секрет открою.
    СMake никогда не был альтернативой make.
    СMake стартанул как альтернатива autotools.
     
  • 4.36, Аноним (36), 13:21, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен

    cmake ./
    make

     
  • 3.11, Аноним (12), 10:53, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Тоже обратил внимание, что все альтернативы старому-доброму make

    А make когда-то был системой сборки? 😂

     
  • 3.13, Аноним (13), 11:04, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А не что тот факт, что cmake - это генератор Makefile'ов, т.е. аналог autotools. Makefile, cгенерированный cmake'ом, затем внезапно запускается в обычном make.
     
     
  • 4.18, анонд (?), 11:17, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    CMake поддерживает несколько генераторов. Ninja намного производительнее чем Make
     
     
  • 5.29, Аноним (26), 13:06, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ninja намного производительнее чем Make

    Это миф. Ninja просто запускает подготовленные кем-то (basel например) команды из compile_commands.json.
    1. если в makefile просто засунуть список этих команд, без вычисления зависимостей, то отработает за +- то же время, но так люди не делают, т.к. не читаемо.
    2. ninja отрабатывает после генератора этого compile_commands.json и если сложить время, то оно будет больше чем у нормального человеческого Makefile из нескольких строчек.

     
     
  • 6.35, Советский инженер (ok), 13:20, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ... команды из compile_commands.json

    🤣🤣🤣

     
  • 6.39, Аноним (12), 13:30, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >> Ninja намного производительнее чем Make
    > Это миф. Ninja просто запускает подготовленные кем-то (basel например) команды из compile_commands.json.

    Вот такие вот истории со срывами покровов получаются, когда стартапного СТО познакомить с DeepSeek... 🤦

     
     
  • 7.40, Аноним (26), 13:41, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Чатик мне запилил так-то рабочий скрипт для конвертации мезон либ в тупо папку в проекте с исходниками парсингом compile_commands.json, так что я в курсе, как это работает. Makefile в отличие от cmake не требует указывать каждый C/C++ файл (тот так может но криво и ломается так сборка постоянно, поэтому у смачников сизифов труд по добавлению каждого с файла в смаке). Т.к. мне не нужно иметь кучу раздутых so всё собирается статически с едиными флагами в компактный бинарь.
    И да, я использую генерацию кода - и что вы мне сделаете) Раздутый штат кодеров больше компаниям не нужон.
     
     
  • 8.48, Аноним (12), 14:13, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Попроси чатик объяснит смысл этого набора случайных слов, ибо я лично распарсить... текст свёрнут, показать
     
  • 2.4, Аноним (7), 10:41, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А где ты там сложности вообще увидел? target_link_libraries не осилил?
     
     
  • 3.34, Аноним (34), 13:19, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В прошлый раз тут советовали писать тесты для оператора if, потому что по меркам CMake это сложная логика с проблемным легаси ("The if command was written very early in CMake's history..."), которое решили не чинить.
     
     
  • 4.41, Аноним (7), 13:43, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не знаю, кто там тебе и чего советовал, но проект на cmake накинуть можно за пару минут.
     

  • 1.6, Жироватт (ok), 10:43, 12/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Интересно, как скоро
    а) язык конфигурирования сборочной системы СМаке оформится как отдельный, полноценнный Тьюринг-полный язык,
    б) для которого нужен будет свой язык конфигурирования сборки?
     
     
  • 2.21, Аноним (21), 11:30, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    так CMake уже Тьюринг-полный и скрипты можно запускать не в режиме сборки, а в режиме интерпретации через ключ -P
     

  • 1.17, anon57 (?), 11:16, 12/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    На работе, в основных проектах, был выбран CMake. Периодически приходиться нырять в эту чертовщину и чинить. Хорошо хоть появились форки CMake с поддержкой отладки.
    Для домашних проектов использую premake5. С версии 5-beta6 появился API для управления зависимостями примерно как в CMake. Теперь можно описать как использовать либу, а потом просто воткнуть в проекте uses 'SDL3' и нужные опции прокидываются. Тут если что почитать можно: https://premake.github.io/docs/Usages-and-Uses

    Короче CMake не нужен, закапывайте.

     
     
  • 2.27, Аноним (12), 12:49, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > С версии 5-beta6 появился API для управления зависимостями примерно как в CMake.
    > нужные опции прокидываются
    > Короче CMake не нужен, закапывайте

    То есть недавно в бета-версии premake появилась опция, которая доступна в CMake уже лет 20? Уже бегу закапывать CMake!

     
  • 2.42, Аноним (7), 13:44, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >в основных проектах
    >нырять в эту чертовщину и чинить

    Наверное тут надо команду разработи менять, а не cmake.

     

  • 1.19, анонд (?), 11:18, 12/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Все используют CMake, но писать на этом языке никто не хочет
     
     
  • 2.43, Аноним (7), 13:48, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Я тебя может удивлю, но пользователи cmake даже не используют. Только мейнтейнеры и изредка программисты.
     

  • 1.22, Аноним (22), 12:08, 12/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Беда почти всех яп - чтобы собрать программу, надо выучить ещё один язык. Хорошо, что я сборщики себе на сях свои пишу.
     
     
  • 2.23, Аноним (23), 12:14, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    что мешает писать все в одном файле? :)
     
     
  • 3.25, Аноним (-), 12:42, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нужно умещать весь код в один экран, как это делает создатель языка K.
     
     
  • 4.38, Аноним (23), 13:25, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    забыл совсем, у вас там скрол не работает в терминале :)
     
  • 2.32, trolleybus (?), 13:14, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Rust с build.rs нервно курит в сторонке... Хотя, о чем это я. Для экспертов опеннета раст - не язык.
     
  • 2.47, Аноним (47), 14:10, 12/08/2025 [^] [^^] [^^^] [ответить]  
  • +/
    а в чем проблема писать так чтобы одного языка хватало?
     

  • 1.45, Аноним (45), 14:02, 12/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто-нибудь пробовал системы сборки meson или bazel?
     
  • 1.46, Аноним (45), 14:08, 12/08/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зависимости cmake весят больше программы в несколько раз. Прикольно, че.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру