The OpenNET Project / Index page

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

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

22.11.2021 12:26

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

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

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

  • В средствах для настройки параметров компилятора (Compile Features) предоставлена возможность включения и отключения расширений компилятора без указания уровня поддержки стандарта, а также исключена установка лишних флагов с уровнем стандарта языка, если выбранные настойки подпадают под установленные по умолчанию параметры компилятора.
  • В команде cmake_host_system_information() добавлена возможность запроса идентификатора операционной системы, хранимого в файле /etc/os-release.
  • Добавлены переменные окружения CMAKE_BUILD_TYPE и CMAKE_CONFIGURATION_TYPES, через которую можно выставить значение по умолчанию одноимённых переменных CMake.
  • Добавлена переменная "CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>" переводящая вызов функции find_package() для обнаружения указанного пакета в разряд обязательных.
  • Добавлена переменная окружения "CMAKE_INSTALL_MODE" для установки символических ссылок место копирования файлов при вызове "install()".
  • Добавлен флаг "CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG" и переменная "CMAKE_LINK_WHAT_YOU_USE_CHECK" для выставления и проверки флагов компоновщика.
  • В модуле FetchContent обеспечена передача выставленных переменных "CMAKE_TLS_VERIFY", "CMAKE_TLS_CAINFO", "CMAKE_NETRC" и "CMAKE_NETRC_FILE" в сценарии сборки внешних проектов (ранее данные параметры игнорировались).
  • В предоставляемый модулем "CMakeDependentOption" макрос "cmake_dependent_option()" добавлена полная поддержка синтаксиса условных выражений.
  • Модули "FindJasper" и "FindMatlab" теперь предоставляют импортируемые цели.
  • В свойстве "VS_SETTINGS" реализована поддержка всех типов файлов с исходными текстами.
  • Объявлен устаревшим и будет удалён в одном из следующих выпусков генератор "Visual Studio 10 2010".


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


Обсуждение (53) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 12:36, 22/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    лучшая тулза для билда
     
     
  • 2.25, Аноним (25), 16:19, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +6 +/
    не лучше так
    лучшая() тулза() для() билда()
     

  • 1.3, Аноним (3), 12:36, 22/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    это вам не мехон
     
     
  • 2.26, Аноним (25), 16:23, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    и не репка ...
     

  • 1.5, Аноним (5), 12:44, 22/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Все хочу попробовать скрестить язык tcl и cmake и посмотреть, как изменится красивость скриптов моих, да все времени нет..
     
     
  • 2.7, Аноним (7), 12:56, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    для красивости к cmake добавляют rust со вставками на perl, в которых внутри вставки на haskell
     
     
  • 3.11, Аноним (11), 13:59, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    И всё это облепят Electron'ом.
     
     
  • 4.27, Аноним (25), 16:24, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    простите вы там не удр-ись?
     
  • 4.53, заминированный тапок (ok), 13:15, 23/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >И всё это облепят Electron'ом.

    через electron-jvm

     

  • 1.10, Аноним (10), 13:55, 22/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Это все фингня, завезли ли в него поддержку новой студии? Уже можно студию обновлять или еще ждать?
     
     
  • 2.15, Guest (??), 14:40, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да уже завезли, было ещё в одном из предыдущих выпусков. Плюс сама студия идёт с CMake'ом с такой поддержкой.
    В одном из Preview выпусков студии шла версия CMake без поддержки 2022 студии, но там основной сценарий сборка через Ninja так что генерация солюшена и проектов 2022 не критично, с точки зрения MS.
     
  • 2.16, keydon (ok), 14:48, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Студия не нужна
     
     
  • 3.28, Аноним (25), 16:26, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тоже ставите только Windows SDK ?
    вопрос только в том как автоматом научить clang понимать где он что бы не прописывать какие-то непонятные номера в скриптах
     
     
  • 4.47, keydon (ok), 22:25, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Тоже ставите только Windows SDK ?
    > вопрос только в том как автоматом научить clang понимать где он что
    > бы не прописывать какие-то непонятные номера в скриптах

    Нет, в моем мировозрении операционные системы windows и osx и софт для них отсутствует.
    > вопрос только в том как автоматом научить clang понимать где он

    То ли это вопрос "как прописать PATH", то ли "виндапроблемы".
    Первое решается просто по первой же ссылке в гугле https://losst.ru/peremennaya-path-v-linux, второе решается не просто, а очень просто "виндузятники мазахисты, не нужно лишать их удовольствия от страданий"
    На всякий случай отмечу что кривое поделие под названием WSL относится к "виндапроблемам". WSL это не линух, WSL это кусок !@#$%^.

     
     
  • 5.49, Прохожий (??), 01:25, 23/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кусок Убунты вы хотели сказать?
     

  • 1.12, Аноним (12), 14:12, 22/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сколько перепробовал систем сборки и понял что только premake все делает правильно.
     
     
  • 2.23, Аноним (23), 16:13, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Когда в premake можно будет скомпилировать хедер и посмотреть какие дефайны были выставлены?
     
     
  • 3.44, Андрей (??), 21:13, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    По идее никто не запрещает написать например make help, чтобы увидеть сгенерированные цели, а затем если вам хочется - вы можете натравить make на эту цель в режиме холостой печати иииии вывод грепнуть целом не смотря на всё сказанное все дефайны компилятору вполне поддаются обнаружению. Как альтернативу вы можете добавить возможностей в примейк-рецепт и настроить его выводить что душе угодно.
     
  • 2.29, Аноним (25), 16:27, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    надо взглянуть, а то он еще и на сях и даже с нормальными ключевыми словами, а если еще и умеет библиотеки сам искать через pkg-config то вообще цены ему нет
     
  • 2.40, yet another anonymous (?), 17:45, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Так ведь там нет ничего, что выходит за пределы возможностей gnu make + friends.
     

  • 1.13, макпыф (ok), 14:17, 22/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > минимальным числом зависимостей

    ЛПП

    > нет привязки Perl или Python

    Которые все равно есть в любом дистрибутиве (где собирают ПО из исходников, то есть не embeded)

    Зато есть зависимости от libuv libjson-cpp libarchive curl librhash и nghttp2 (последний то зачем??? )

    Наличие их копий в тарболе ни чего не меняет. Без учета того что есть везде их как минимум 6. У ninja/meson и scons - только python который везде, у autotools - perl (тож везде) и m4

     
     
  • 2.14, Аноним (14), 14:27, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > (последний то зачем??? )

    как минимум просто потому что libcurl притащил

     
  • 2.17, пох. (?), 15:08, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> нет привязки Perl или Python
    > Которые все равно есть в любом дистрибутиве

    мир для которого предназначен cmake пока еще не исчерпывается вашими одинаковыми клонами systemd/linoops отличающимися только нескучными обоями.

    К тому же возникают разночтения, к какой наираспоследней версии впихона вам удалось необратимо привязать ваш любимый сборочный ненужно-инструмент.

    Зависимость от libuv (которая со всем миллиардом собственных зависимостей не собирается нормально без самого cmake) конечно не подарок, но по другому они уже все равно давно разучились.

    Если что - autotools  не предназначены для запуска на целевой системе вообще. configure требует наличия только posix shell.

     
     
  • 3.18, макпыф (ok), 15:19, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >>> нет привязки Perl или Python
    >> Которые все равно есть в любом дистрибутиве
    > мир для которого предназначен cmake пока еще не исчерпывается вашими одинаковыми клонами
    > systemd/linoops отличающимися только нескучными обоями.

    в дистрибутивах bsd нет пихона? systemd тут каким боком?

    > ваш любимый сборочный ненужно-инструмент.

    Мой любимый сборочный инструмент (autotools) к пихону не привязан

    > Зависимость от libuv (которая со всем миллиардом собственных зависимостей не собирается
    > нормально без самого cmake)

    Ну вообще то libuv только от libc зависит и использует autotools

    > Если что - autotools  не предназначены для запуска на целевой системе
    > вообще. configure требует наличия только posix shell.

    Знаю. Я про то что "минимальное число зависимостей" у cmake не выходит ну никаким боком, не важно с чем сравнивать

     
     
  • 4.19, пох. (?), 15:28, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    в операционной системе freebsd нет не только пихона (какой из последних несовместимых версий?), но двадцать лет как нет уже и перла. Кстати, обратите внимание - сама она собирается без всего этого хлама. (и конфигурируется, угу)
    Разумеется, кому очень надо, может все это пока поставить из портов (пока, потому что циклические зависимости скоро некому будет разруливать).

    Да, про libuv это склероз подвел - с ней все в порядке, а вот jsoncpp требует мезон, самую наираспоследнюю версию впихона и девственниц в жертву.

     
     
  • 5.21, макпыф (ok), 15:43, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > в операционной системе freebsd нет не только пихона (какой из последних несовместимых
    > версий?), но двадцать лет как нет уже и перла. Кстати, обратите
    > внимание - сама она собирается без всего этого хлама. (и конфигурируется,
    > угу)

    Ок, я bsd не пользовался, а т.к. python/perl просит половина пакетов из LFS (базовой системы) (про BLFS и остальное вообще не говорю) жизнь без них не представлял возможной

    > Разумеется, кому очень надо, может все это пока поставить из портов (пока,
    > потому что циклические зависимости скоро некому будет разруливать).

    Да, с циклическими (и вообще с любыми) зависимостями становится все хуже... Но в принципе у питона большинство зависимостей опциональны, а perl их мало и врятли будет сильно расти. Но зависимости  зависимостей тоже могут "расти"

    > какой из последних несовместимых версий?

    Python2 EOL, но пока требуется некоторым софтом (android для сборки например хочет). Думаю что скоро умрет окончательно.

     
     
  • 6.32, yet another anonymous (?), 16:50, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Python2 EOL, но пока требуется некоторым софтом (android для сборки например хочет). Думаю что скоро умрет окончательно.

    Вас бы google со своим android'ом послушал...

     
     
  • 7.43, пох. (?), 18:30, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    да ну, бросьте, не умрет андроид. фикция - это фикция. мертворожденное ненужно. Гугль рожает такие прожекты пачками, и так же пачками они мрут. А работающие продолжаются вечно.

    так и будете собирать для него в уголке свой особый пихон2 десятилетней выдержки. фигли делать-то...

     
     
  • 8.45, yet another anonymous (?), 21:58, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    ээээ возможно Я, правда, на 1 2 android ную сборку увёл под третий питон д... текст свёрнут, показать
     
  • 5.54, anonymous (??), 14:33, 23/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Уважаемый, а ты что, чтобы поставить cmake, собираешь его из исходников с зависимостями? Открой для себя репозитории, там все есть и все скомпилировано до тебя. Чтобы использовать собирать cmake-проект, не нужно при этом сам cmake бутстрапить. Не страдай фигней.
     
     
  • 6.55, пох. (?), 14:58, 23/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Уважаемый, а ты что, чтобы поставить cmake, собираешь его из исходников с зависимостями?

    да. Причем не со всем интернетом, сволочь такая, а только с той частью, которую совсем уж никак не оторвать.

    > Открой для себя репозитории

    спасибо, а зачем мне тогда cmake был бы нужен? То что им собирается, наверняка уже кем-то собрано и рядом выложено.

    К счастью, мир пока еще не кончается на единственном вашем systemd/linoops, непременно последней версии (предпоследнее ведро несовместимо с данной версией Systemd)

     
     
  • 7.56, anonymous (??), 15:18, 23/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну ты и отбитый. Удачи тебе с твоей нелинукспомойкой. Если что, приходи годика через два, когда уму-разуму наберешься и фанатизм подрастеряешь, научим тебя как на промышленных средах проекты собирать и не конпелять при этом половину сборочной системы.
     

  • 1.20, Урри (ok), 15:31, 22/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Кошмарная система сборки. К сожалению у нее нету альтернатив - пользуюсь и плачу, плачу и пользуюсь.
     
     
  • 2.22, пох. (?), 16:09, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    мы только что обнаружили что без meson ты ее зависимости зависимостей даже и не соберешь.

    Ну так а зачем тебе еще одна такая же?

     
     
  • 3.30, Аноним (25), 16:29, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    нужно подождать когда они сдадутся и свой CMake будут собирать через meson
    уже могли бы постепенно идти друг другу на встречу ключевые слова подбирать
    синтаксис улучшать, но нет стоят на своем
     
  • 3.33, Урри (ok), 16:52, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну так а зачем тебе еще одна такая же?

    Мне не нужна такая же. Мне нужна нормальная.

     
     
  • 4.35, пох. (?), 17:00, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну сам же признаешь что это что угодно но не cmake - так зачем же ж страдать?

     
     
  • 5.37, Урри (ok), 17:08, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что у заказчиков большой проект именно на симейке, а малой кровью перевести эту кучу малопонятных портянок на что-то другое не получится. Ну а за большую кровь оне платить не согласны.
     
  • 5.61, andy (??), 21:20, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну сам же признаешь что это что угодно но не cmake -
    > так зачем же ж страдать?

    Пох, скажи пожалуйста, а какая система сборки хорошая (ну, или зная твое отношение к современной разработки ПО, наименее говенная)? Окромя самописных posix Makefile'ов, разумеется.

     
     
  • 6.62, пох. (?), 22:18, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А почему нет, кстати? Хотя bmake поинтереснее будет. Кстати, она вполне портируема, собирается autoconf, и, разумеется, ее писали в те древние прекрасные дни когда никому в голову не приходило намеренно удалять configure из релиза - поэтому для просто сборки на поддерживаемой платформе autotools тоже не требуются - достаточно posix shell.

    А если тебе в портируемый софт - то замены autoconf мне неизвестны. Потому что его магия реально решает некоторые проблемы, которые в остальных случаях либо не требуют решения (бесконечные поиски того что во всех системах лежит в одном и том же месте, причем всегда) либо решаются только вручную.

     
  • 2.51, Ordu (ok), 10:50, 23/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Кошмарная система сборки.

    А что с ней не так? Я ей пользовался только как пользователь, и в таком формате она вполне работает.

     

  • 1.24, Аноним (23), 16:13, 22/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Худшая система сборки.

    Начиная от упоротого синтаксиса и отсутствия толковой документации, заканчивая просто нерабочими модулями.

     
     
  • 2.31, Аноним (25), 16:31, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    подтверждаю. сталкивался в паре проектов.
    нахлебался щей. в целом пока или классика Make/autotols или meson (хотя тут сложно) они там тоже какие-то обкуренные
     
     
  • 3.34, Урри (ok), 16:58, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > нахлебался щей.

    Пока остаешься под никсами мейк непревзойден и велоколепен. В связке с башем и авк - комбайн, и код сбилдить, и тесты прогнать, и почистить, и документацию нагенерить.

    Но, к сожалению, приходится собирать и под студию. И если под офтопик, в принципе, можно mingw через мейк попользовать (и тесты через wine прогнать), то студией собрать никак.

    Посему без симейка никуда. Печаль. Вот прямо сейчас страдаю, запуская через ремут десктоп "cmake --build . --target BUILD_ALL INSTALL". Блин, даже командная строка через _опу...

     
     
  • 4.36, пох. (?), 17:01, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И что мешает и там использовать make? Или нужна именно сама студия, с интуитивно-понятными кнопочками "скачать с гитхапа или гитляпа и собрать"?

     
     
  • 5.38, Урри (ok), 17:10, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да, нужна именно студия. С ее идиотскими кнопочками "собрать", "запустить", "ждать полчаса пока дебаггер поймет что надо брекпоинт поставить".
     
  • 5.46, yet another anonymous (?), 22:09, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    пох, вы таки будете смеяться, но во времена, когда мне нужно было собирать и под W., я так и делал. С cygwin'ом получалось менее затратно, чем впрямую с nmake'ом. Студия --- неприемлемо (там под ней nmake и остался?). Оно упорно хотело только абсолютные пути и более одного варианта сборки на одной машине уживались с заметными усилиями.

    Но давно это было. Судя по запросам/комментариям --- всё осталось так же.

     
     
  • 6.52, пох. (?), 11:08, 23/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    &"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\nmake"

    Microsoft (R) Program Maintenance Utility Version 14.00.24245.0
    Copyright (C) Microsoft Corporation.  All rights reserved.

    NMAKE : fatal error U1064: MAKEFILE not found and no target specified
    Stop.

    Ничего не поменялось. Ну а для путей (которые вполне могут быть относительными ;-) как раз предназначены скрипты конфигурации.

    Но, увы, студия любит cmake, отлично с ним интегрировалась и хочется убивать, убивать, убивать...

     
  • 4.39, Аноним (39), 17:39, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Пока остаешься под веществами мейк непревзойден и велоколепен.

    исправил, не благодари

     
  • 3.48, all_glory_to_the_hypnotoad (ok), 00:08, 23/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    make и autotools на несколько порядков хуже CMake. Последний по крайней мере умеет генерировать правила для ninja
     
     
  • 4.50, Аноним (-), 02:21, 23/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Последний по крайней мере умеет генерировать правила для ninja

    Это которого потом может запустить meson ? Да , отличная штука.

     

  • 1.41, Аноним (-), 18:03, 22/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    кто то пользуется этим отстоем?
     
     
  • 2.42, Аноним (42), 18:22, 22/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Никто, эта шляпа была до месона. Но объективно она способна выкачать исходники зависимости из сф и собрать их использовав автомейк и всё остальное -- это мой кейс 10 летней давности, что ещё просить? Кроссплатформенно, популярнее pkg-config. С тех пор я либо поставляю ворованную копию исходников (как это делают большинство проектов), либо заставляю пользователей самостоятельно разбираться с зависимостями. Это очень упрощают сопровождение.
     

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



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

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