The OpenNET Project / Index page

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

Релиз системы сборки CMake 3.17.0

22.03.2020 09:55

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

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

Основные улучшения:

  • Добавлен новый генератор сборочных сценариев на базе инструментария Ninja - "Ninja Multi-Config", отличающийся от старого генератора возможностью обработки за раз сразу нескольких сборочных конфигураций.
  • В генераторе сборочных сценариев для Visual Studio появилась возможность определения файлов с исходными текстами, привязанных к каждой конфигурации (per-config sources).
  • В средства для настройки параметров компилятора (Compile Features) добавлена возможность задания мета-параметров для CUDA ("cuda_std_03", "cuda_std_14" и т.п).
  • Добавлены переменные "CMAKE_CUDA_RUNTIME_LIBRARY" и "CUDA_RUNTIME_LIBRARY" для выбора типа runtime-библиотек при использовании CUDA.
  • Добавлен модуль "FindCUDAToolkit" для определения доступного в системе инструментария CUDA без включения языка CUDA.
  • В утилиту cmake добавлена команда "--debug-find" для вывода дополнительной читаемой диагностики при выполнении операций поиска. Для аналогичных целей добавлена переменная CMAKE_FIND_DEBUG_MODE.
  • В модуль "FindCURL" добавлена поддержка поиска инструментария CURL при помощи генерируемых cmake файлов конфигурации "CURLConfig.cmake". Для отключения указанного поведения предусмотрена переменная CURL_NO_CURL_CMAKE.
  • В модуль FindPython добавлена возможность поиска компонентов Python в виртуальных окружениях, управляемых при помощи "conda".
  • В утилиту ctest добавлены опции "--no-tests=[error|ignore]" для определения поведения в случае отсутствия тестов и "--repeat" для задания условий повторного запуска тестов (until-pass, after-timeout).
  • Обеспечен перенос свойств сборочной цели INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES и INTERFACE_LINK_DEPENDS в числе внутренних зависимостей статически собираемых библиотек.
  • При использовании инструментария MinGW по умолчанию отключён поиск DLL-файлов командой find_library (вместо этого по умолчанию осуществляется попытка импортирования библиотек ".dll.a").
  • Логика выбора утилиты ninja в генераторе Ninja теперь не зависит от названия исполняемого файла - используется первая попавшаяся утилита ninja-build, ninja или samu, найденная в путях, определённых через переменную окружения PATH.
  • В утилиту cmake добавлена команда "-E rm", которую можно использовать для удаления файлов и каталогов вместо раздельных команд "-E remove" и "-E remove_directory".


  1. Главная ссылка к новости (https://blog.kitware.com/cmake...)
  2. OpenNews: Релиз системы сборки CMake 3.16
  3. OpenNews: Проект Qt прекращает разработку сборочной системы Qbs в пользу CMake
  4. OpenNews: Выпуск сборочной системы Meson 0.52
  5. OpenNews: Выпуск сборочной системы Bazel 2.0
  6. OpenNews: Сотрудник Red Hat представил сборочную систему Goals. Выпуск GNU Make 4.3
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/52585-cmake
Ключевые слова: cmake, make, build
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (44) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:34, 22/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    >FindCUDAToolkit

    ой чувствую весело будет, этот цмейк всё чаще и чаще рассыпается из-за этих кривых скриптов.

     
     
  • 2.5, Урри (?), 13:14, 22/03/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    что значит чаще? он всегда на них помирал.
     

  • 1.2, Коровавирус (?), 11:09, 22/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Зато есть зависимость от c++.
     
     
  • 2.4, Аноним (4), 12:03, 22/03/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    от этого лечат, обратитесь к специалисту
     
     
  • 3.14, Ordu (ok), 22:54, 22/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    От коровавируса или от зависимости от C++?
     
     
  • 4.40, Аноним (40), 15:08, 24/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    От диареи.
     
  • 2.8, Аноним (8), 17:25, 22/03/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    В вашем дистрибутиве нет GCC или он совсем в минималистиичном варианте собран?
     
     
  • 3.10, Аноним (10), 18:36, 22/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ты не поверишь... но... да, есть дистры без gcc
     
     
  • 4.11, Аноним (11), 19:01, 22/03/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >генератор сценариев сборки для C/C++
    >дистры без gcc

    Лови наркомана!

     
     
  • 5.13, Аноним (10), 20:37, 22/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Лунтик, перелогинься, и не путай больше компилятор с языком.
     
  • 4.19, Аноним (19), 07:44, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Якие?
     
  • 4.21, YetAnotherOnanym (ok), 09:50, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В дистрах без gcc остро нужна система сборки ПО из исходного кода.
     
     
  • 5.24, Аноним (10), 15:45, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    если ты кроме gcc не знаешь ни одного другого компилятора...
     
     
  • 6.25, YetAnotherOnanym (ok), 19:29, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > если ты кроме gcc не знаешь ни одного другого компилятора...

    В дистрах с "другим компилятором" нужный софт мантейнеры пакетов патчат так, чтобы он собирался "другим компилятором".

     
     
  • 7.34, Аноним (34), 00:07, 24/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А я думал это апстрим патчит. Потому что "другой компилятор" - это единственный компилятор, который один, но под несколько платформ и стандартных библиотек, не то что gcc-гoвно, которое для каждой платформы места дофига отжирает и только со своей стандартной библиотекой работать может. В общем, поддержка "другого компилятора" в кодовой базе строго обязательна.
     
     
  • 8.37, YetAnotherOnanym (ok), 10:48, 24/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Если разрабы вменяемые, то да, а если лентяи, которым влом возиться с портабельн... текст свёрнут, показать
     
  • 3.22, Аноним (22), 09:57, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    https://www.opennet.ru/opennews/art.shtml?num=51286
     
     
  • 4.38, Аноним (40), 15:00, 24/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    И шо отсюда следует? FreeBSD перестанет иметь возможность собирать исходники на C++? Не, не думаю. Поэтому и CMake сможет.
     

  • 1.3, Аноним (34), 11:50, 22/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    >samurai is a ninja-compatible build tool written in C99

    Что только карго-культисты не сделают, лишь бы только C++ не использовать.

     
     
  • 2.7, Аноним (7), 15:13, 22/03/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Нее, карго-культисты на расте пишут
     
  • 2.12, Аноним (12), 19:01, 22/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    В ninja-build такой С++, что... С с классами. Делаю вывод, они даже код не читали.
     

  • 1.6, Урри (?), 13:17, 22/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Уже лет десять, если не больше, использую. И до сих пор плююсь.
    Ну неудобен симейк и все тут. Каждый раз ощущение, что хочу с граблями вместо ног.

    Но симейку все равно спасибо за работу.

     
     
  • 2.9, Аноним (9), 18:34, 22/03/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    На безрыбье и cmake крабовые палочки =)
     
  • 2.15, Аноним (15), 22:57, 22/03/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Все познается в сравнении. Что угодно лучше, чем autotools
     
  • 2.16, Соня Мармеладова (?), 01:24, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    На столько плююсь, что хоть делай его частью systemd))
     
     
  • 3.41, анон (?), 17:15, 24/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    ваша системДА собирается симейком
     
     
  • 4.43, Аноним (43), 19:37, 24/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    A это тогда что? https://github.com/systemd/systemd/blob/master/meson.build
     
  • 2.20, Аноним (19), 07:47, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Проблема в том, то cmake уже стал промышленным стандартом как C++. ты берешь любую библиотеку, а там используется CMake
     
     
  • 3.23, Аноним (10), 12:11, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это ты сам придумал или тебе кто-то подсказал? Берёшь любую библиотеку, а там Make, Premake, GYP, SCons, Apache Ant, Apache Maven, NAnt, Meson, Buildout, Waf, Rake, Gradle, Sbt... И это ещё не все.

     
     
  • 4.32, Аноним (19), 21:35, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Если ты на жаваскрипте пишешь, то возможно у тебя так. Но ты рискуешь обгадиться, когда вступаешь в такой диалог
     
  • 4.35, Аноним (34), 00:09, 24/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Всё сразу, макаки по-другому не могут.
     
  • 3.42, анон (?), 17:17, 24/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    и єто офигенно! лучше херовый, но широко используемый стандарт, чем хрен знает что.
     

  • 1.17, Аноним (17), 06:27, 23/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Шмяк 3.17.0
     
  • 1.18, Аноним (19), 07:42, 23/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Адски неудобная штука, функции даже возвращать значения не умеют. Нужно использовать макросы и передавать переменную, в которую будет записан результат, как параметр, но в макросах нет вложенной области видимости и все локальные переменные создаются в той же области видимости, где был использован макрос
     
     
  • 2.26, all_glory_to_the_hypnotoad (ok), 19:52, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, cmake знатный кусок гогна, однако вложенность есть и создаётся она функциями, которые суть макросы только со своим скопом переменных.
     

  • 1.27, Andrey_Karpov (ok), 20:02, 23/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как мы исправили один баг в CMake: https://www.viva64.com/ru/b/0719/
     
     
  • 2.28, all_glory_to_the_hypnotoad (ok), 20:23, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Когда же вы наконец обанкротитесь
     
     
  • 3.29, Аноним (17), 20:26, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ты фанатик?
     
     
  • 4.31, Аноним (19), 21:32, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сотрудникам за спам доплачивают?
     
  • 3.33, Антошка (??), 23:53, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Почему вы такое злое существо?
     
     
  • 4.39, Аноним (40), 15:04, 24/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Я его понимаю. Эта конторка уже задолбала своей "ненавязчивой" рекламой на ресурсе свободного ПО.
     
  • 2.30, Аноним (19), 21:30, 23/03/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Вы хотя бы осознаете, что настолько навязчивый пиар вызывает только отторжение?
     
  • 2.36, Аноним (34), 00:13, 24/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А не могли бы вы и все остальные баги в CMake исправить, а то они там годами висят и Брэдом просто игнорятся?
     

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



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

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