The OpenNET Project / Index page

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

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

29.03.2018 16:52

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

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

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

  • В генератор сборочных файлов Ninja добавлена поддержка компиляторов TI C/C++;
  • В генераторах для Visual Studio появилась возможность использования условного выражения COMPILE_LANGUAGE при определении значений COMPILE_DEFINITIONS, INCLUDE_DIRECTORIES, COMPILE_OPTIONS и file(GENERATE). В генераторе Xcode поддержка условного выражения COMPILE_LANGUAGE обеспечена для COMPILE_DEFINITIONS и INCLUDE_DIRECTORIES (в COMPILE_OPTIONS и file(GENERATE) уже поддерживалась ранее);
  • Компанды add_library() и и add_executable() теперь могут вызываться без наличия исходных текстов с расчётом, что код будет добавлен позднее при помощи команды target_sources();
  • В команду target_compile_definitions() добавлено свойство INTERFACE_COMPILE_DEFINITIONS, в команду target_compile_features() - INTERFACE_COMPILE_FEATURES, в target_compile_options() - INTERFACE_COMPILE_OPTIONS, в target_include_directories() - INTERFACE_INCLUDE_DIRECTORIES, в target_sources() - INTERFACE_SOURCES, в target_link_libraries() - INTERFACE_LINK_LIBRARIES;
  • В свойстве исходных файлов "COMPILE_DEFINITIONS" добавлена поддержка выражений генератора;
  • Свойство исходных файлов COMPILE_OPTIONS добавлено в список опций, передаваемых компилятору;
  • При использовании свойств AUTOMOC или AUTOUIC, CMake теперь параллельно запускает несколько процессов moc или uic для сокращения времени сборки. Число процессов определяется через переменную CMAKE_AUTOGEN_PARALLEL и свойство AUTOGEN_PARALLEL (по умолчанию выставляются в значения, соответствующие числу CPU).


  1. Главная ссылка к новости (https://blog.kitware.com/cmake...)
  2. OpenNews: Релиз системы сборки CMake 3.10
  3. OpenNews: Релиз системы сборки CMake 3.9
  4. OpenNews: Доступна система сборки Meson 0.42, на которую переходят systemd, GTK+ и GNOME
  5. OpenNews: Доступен сборочный инструментарий Qbs 1.10, развиваемый проектом Qt
  6. OpenNews: Релиз генератора файлов сборки GNU Automake 1.16
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/48352-cmake
Ключевые слова: cmake, build
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (47) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 18:49, 29/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    ха-ха, рядом новость про QBS!
     
  • 1.2, Аноним (-), 18:56, 29/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    да ну нах usr ports devel cmake Makefile LIB_DEPENDS libcurl so ftp curl ... большой текст свёрнут, показать
     
     
  • 2.3, Аноним (-), 19:40, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > т.е автоконф (вместе со всем хламом в виде перла и m4) тоже

    Пуссиэкзешники должны страдать!
    https://packages.debian.org/ru/sid/cmake
    > Знаете, я лучше на autotools останусь

    Замшелым и ничего толком на современных системах не умеющим? Прям подстать бздам ))

     
     
  • 3.7, Аноним (-), 20:52, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    и что вы мне этой ссылкой хотели показать, кроме того что еще и по-английски не ... большой текст свёрнут, показать
     
     
  • 4.8, Аноним (-), 20:58, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > У вас там точно такая же зависимость от libuv (она,кстати, собирается не только autotools, но и cmake. Уп-с... но мы пытаемся собрать cmake!)

    А компилятор без компилятора ты уже собрал?

     
     
  • 5.10, Аноним (-), 21:04, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    слив засчитан.
    То есть факт звиздежа про "миниимум зависимостей" (вместо аж двух у automake) опровергнуть не получилось, пришлось приступить к подмене понятий.

     
     
  • 6.11, anonymous (??), 21:49, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ты эта, runtime от buildtime зависимости отличай и make clean не забывай делать. По runtime cmake не зависит от autotools.
     
     
  • 7.24, Аноним (-), 10:23, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вам там показали кучу чудовищного уродливого bloatware, от которого зависит Но ... большой текст свёрнут, показать
     
     
  • 8.34, Аноним (-), 13:55, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Теоретически На деле же 8230 Это не ты выше цитату приводил Ну то есть не со... большой текст свёрнут, показать
     
     
  • 9.35, Аноним (-), 16:45, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    ну так что вы хотите Одни неумельцы тащат в продукт поделки других Я ж говор... большой текст свёрнут, показать
     
     
  • 10.40, Аноним (-), 17:52, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Так я ж соглашаюсь не надо эту бяку в рот И в другие физиологические отверстия... текст свёрнут, показать
     
     
  • 11.42, Аноним (-), 19:09, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    ну так это и есть способ рассказать automake, что тебе от него нужно а что из э... текст свёрнут, показать
     
     
  • 12.45, Аноним (-), 11:03, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ничего там не перемешивали Просто первый этап генерацию новых и подкладывание ... текст свёрнут, показать
     
  • 6.17, Аноним (-), 01:44, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > слив засчитан.
    > То есть факт звиздежа

    Неплохо у бздунов бомбануло. Аноним правда другой был, но сказанул все верно.

    Факт в том, что кому шашечки, а кому и ехать. Шашечники гордо собирают все из сорцов, гордясь "прозрачностью" и "простотой", но рулить своей "юниксвейной" системой предпочитают почему-то из под пуссиэкзе.
    А вторым нужно работать, а не маяться дурью, играя в билдферму. И они используют пакетник. Что характерно, из под линуха, где сделали именно так, как нужно для работы и решения повседневных задач, а не и повышения ЧСВ от использования "правильных" академподходов.

     
     
  • 7.20, Ivan_83 (ok), 02:19, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У пакетов есть как минимум одна проблема: они собраны с какими то опциями, и часто то не хватает то оно тянет лишних зависимостей.

    Держать билдферму вообще не проблема и не напряг, как минимум полезней чем майнить.

     
     
  • 8.25, Аноним (-), 10:38, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    и проблема, и напряг - но когда тебе нужно что-то нестандартное или просто отсут... большой текст свёрнут, показать
     
     
  • 9.30, Аноним (-), 12:28, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так ты уже собрал свой любимый проприетарный шланг c помощью шланга, питона, нин... текст свёрнут, показать
     
     
  • 10.37, Аноним (-), 16:59, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ты будешь удивлен, но тот что в base system freebsd - собирается без шланга ну,... большой текст свёрнут, показать
     
     
  • 11.43, Аноним (-), 22:58, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А голый cmake собираем привожу ваш же комментарий usr ports devel cmake Make... большой текст свёрнут, показать
     
     
  • 12.48, Аноним (-), 21:11, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    просто опечатка Там make Обычный такой bsd make ... текст свёрнут, показать
     
  • 9.33, Аноним (-), 13:16, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Синтаксис cmake местами, может, и странноват, но зато предельно простой, если не... текст свёрнут, показать
     
     
  • 10.39, Аноним (-), 17:11, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    на фоне необходимости уметь собственный код писать переносимо - это такая мелочь... текст свёрнут, показать
     
  • 6.32, Аноним (-), 12:47, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > слив засчитан.

    Дорогой бздун, ты слился на незнании матчасти еще при копипасте частей мейк-файлов в качестве "демонстрации" зависимостей. Вместо make (pretty-print-)(build|run)-depends-list или make all-depends-list
    Ну и заодно посмотри зависимости для сборки любимого шланга.

     
     
  • 7.38, Аноним (-), 17:01, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > в качестве "демонстрации" зависимостей. Вместо make (pretty-print-)(build|run)-depends-list
    > или make all-depends-list

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


     
     
  • 8.44, Аноним (-), 23:01, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Т е типикал бздun маны своей же билдсистемы в глаза не видел man ports Яснопон... текст свёрнут, показать
     
     
  • 9.49, Аноним (-), 21:22, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    когда-то видел, запоминать всю эту километровую муру - это для вас, мальчики с ф... текст свёрнут, показать
     
  • 3.16, Аноним (-), 00:15, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > https://packages.debian.org/ru/source/sid/cmake
    > adep: python3-sphinx
    > adep: qtbase5-dev

    Ага, ещё лучше.

     
  • 2.5, Аноним (-), 20:48, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > я лучше на autotools останусь, они хотя бы циклических зависимостей не содержат. m4 и перл собираются без автотула, m4 и перла.

    Обломайся, ему всё равно нужен make. А чем собирается make?

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

    Вот тут полностью согласен. Советую всем так и поступать (не тащить в рот автокрэп).

     
     
  • 3.6, Аноним (-), 20:50, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > ему всё равно нужен make

    Ах да, извини. gmake, конечно же.


     
  • 3.9, Аноним (-), 21:00, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    gmake еще oldschool - там не было принято старательно _удалять_ из дистрибутивно... большой текст свёрнут, показать
     
     
  • 4.12, Аноним (-), 22:21, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > gmake еще oldschool - там не было принято старательно _удалять_ из дистрибутивного архива готовый configure

    Шта? Это где это так стало принято? Не, я понимаю, что хипстота автокрэпом пользоваться не умеет, но она как правило и не пытается. Так кто удалил? Пруф в виде ссылки на архив, пожалуйста (не сгенерированный git archive на каком-нибудь гитхабе, а именно нормальный релиз).

     
     
  • 5.26, Аноним (-), 10:44, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    да везде Старательно добавят в gitignore как будто он у них меняется и буду... большой текст свёрнут, показать
     
     
  • 6.28, Аноним (-), 11:22, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > да везде

    То есть пруфа не будет.

    > Старательно добавят в .gitignore (как будто он у них меняется!)

    В .gitignore его добавляют совершенно правильно. В гите от него толку нет, потому что всё равно при чекауте даты модификации файлов сбиваются, и make может решить перегенерить configure и прочее автокрэповое хозяйство, даже если оно уже есть.

     
     
  • 7.29, Аноним (-), 11:24, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > В .gitignore его добавляют совершенно правильно.

    * Да-да, даже в "олдскульном" gmake: https://git.savannah.gnu.org/cgit/make.git/tree/.gitignore#n23

     
  • 4.13, Аноним (-), 22:23, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Как ни странно, это php. Который действительно собирается и работает на куче
    > совершенно разных систем и в миллионе разных конфигураций.

    Это тот, который под винду только msvc можно собрать? Кул стори.

     
  • 2.14, atnt (?), 22:59, 29/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > /usr/ports/devel/libuv/Makefile:USES=           autoreconf libtool pathfix pkgco

    Может быть это проблема порта и должно быть BUILD_DEPENDS?

     
     
  • 3.18, Ivan_83 (ok), 02:13, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Оно и подразумевает что при билде только используется.
     
  • 2.19, Ivan_83 (ok), 02:16, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Автотулс остой полный, как по мне.
    Нужно обязательно 100500 файлов насоздавать чтобы удовлетворить сборочную систему.
    С CMake достаточно один файл для простого проекта.

    Что до зависимостей - так надо ещё посмотреть, может автор порта просто не заморачивался и зафигачил по максимуму.

     
     
  • 3.27, Аноним (-), 10:48, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Что до зависимостей - так надо ещё посмотреть, может автор порта просто
    > не заморачивался и зафигачил по максимуму.

    Если пытаться что-то из этого выпилить - оно у тебя может и получится, только рано или поздно какой-то проект не соберется кастрированным cmake - если есть кнопка, она ж должна быть нажата!

    и да, модули - отдельная песня, это все - только голый cmake

     
  • 2.36, debdeb (?), 16:55, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Где вы это нашли? В архиве (cmake-3.11.0.tar.gz) нет ни одного makefile'а. Во время сборки bootstrap - таки да, генерируя makefile, для сборки используется make, но никаких autoconf/autotools. Также не понятно про "самое приятное" - исходники libuv (в этом же архиве) тоже компилятся make'ом (без всяких autoreconf и т.п.)
     
  • 2.46, Аноним (-), 13:52, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > т.е автоконф (вместе со всем хламом в виде перла и m4) тоже
    > никуда не делся, "мы не выкинули пончики, они с нами летят",
    > он вам понадобится чтобы собрать архинужную и полезную (кто знает, этот
    > кусок г-на вообще зачем?) деталь для самого cmake.

    Ага, gettext, который тянет libxml, который тянет питон.

     
     
  • 3.47, Аноним (-), 13:57, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ага, gettext, который тянет libxml, который тянет питон.

    Но его можно отключить, если собирать rhash без поддержки иностранных языков.


     
  • 3.50, Аноним (-), 21:28, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Ага, gettext, который тянет libxml, который тянет питон.

    dependency hell сам по себе - это отдельная болячка, хоть и менее чудовищная чем в типикал линуксе (исключая гентуклоны, но у тех своих бед хватает).
    Отчасти устраняемая OPTIONS_UNSET=NLS (и еще двумя десятками UNSET ненужного), в целом - непобедимая, потому что весь нынешний софт так написан.

    а так-то у нас и gmake норовит собираться с NLS. Где вылупляются подобные "разработчики", которым оно нужно - не знаю, и не хочу узнать.

     

  • 1.21, anonimm (?), 05:59, 30/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Отличная система сборки, имеет хорошую поддержку в QtCreator и других IDE (говорят, даже VSCode). Крупные проекты уже оценили; не понимаю тех, кто не хочет переходить с autotools или тех, кто предпочитает голый Makefile.
     
  • 1.31, anonymous (??), 12:36, 30/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Число процессов определяется через переменную CMAKE_AUTOGEN_PARALLEL

    через make -jN сделать не судьба видимо.

     
     
  • 2.41, anonymous (??), 18:09, 30/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    AUTOGEN и AUTOMOC работают там, где нет make.
     
     
  • 3.51, Аноним (-), 21:29, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > AUTOGEN и AUTOMOC работают там, где нет make.

    в винде, да?

     

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



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

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