The OpenNET Project / Index page

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

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

17.07.2018 21:14

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

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

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

  • Команда target_link_libraries() теперь может использоваться для библиотек объектных файлов (Object Libraries);
  • В команды file(GLOB) и file(GLOB_RECURSE) добавлен флаг CONFIGURE_DEPENDS, которые позволяет обрабатывать зависимости системы сборки в процессе перебора содержимого каталогов;
  • Средства для настройки параметров компилятора (Compile Features) теперь учитывают особенности стандарта C++ 20, но набор мета-флагов "cxx_std_20" пока остаётся пустым;
  • В генераторы для Visual Studio 2017 в CMAKE_GENERATOR_TOOLSET добавлена поддержка опции "version=14.##" для явного выбора версии инструментария;
  • В режим сборки (cmake --build) добавлена опция "--parallel [jobs]" ("-j [jobs]") для определения числа параллельно запускаемых сборочных процессов;
  • Добавлена команда add_compile_definitions() для указания конструкций препроцессора, применяемых для текущего уровня иерархии каталогов;
  • В команды cmake_minimum_required() и cmake_policy(VERSION) добавлена возможность указания диапазонов версий в форме "min...max";
  • В команде find_package() обеспечена поддержка поиска префикса, указанного в параметре или переменной окружения PackageName_ROOT;
  • Добавлены новые выражения генератора "$<GENEX_EVAL:…>", "$<TARGET_GENEX_EVAL:target,…>", "$<TARGET_EXISTS:…>" и "$<TARGET_NAME_IF_EXISTS:…>";
  • В модулях FindCURL, FindALSA, FindLibXml2 и FindJPEG обеспечена установка флагов импортирования;
  • Добавлен модуль FindODBC для поиска библиотеки ODBC (Open Database Connectivity);
  • Добавлены модули FindPython, FindPython3 и FindPython2 для определения наличия окружений для выполнения скриптов на языке Python.


  1. Главная ссылка к новости (https://blog.kitware.com/cmake...)
  2. OpenNews: Релиз системы сборки CMake 3.11
  3. OpenNews: Выпуск системы сборки GNU Make 4.2
  4. OpenNews: Выпуск системы сборки пакетов Open Build Service 2.8 с поддержкой технологии Snap
  5. OpenNews: Доступна система сборки Meson 0.42, на которую переходят systemd, GTK+ и GNOME
  6. OpenNews: Разработчик языка XL опубликовал новую сборочную систему build
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/48979-cmake
Ключевые слова: cmake, make, build
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (22) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 22:28, 17/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    FindPython3! Наконец, решится старая проблема с нахождением второго питона при поиске третьей версии из-за того, что другой подкаталог искал вторую версию...
     
  • 1.4, gdsagdfhdfg (?), 00:42, 18/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    В мире С/CPP во всем такая же жесть, как и в сборке?
     
     
  • 2.5, pavard (ok), 02:33, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +7 +/
    этот мир не для сказочных принцесс. можешь не красоваться - не оценят.
     
  • 2.9, Аноним (9), 07:26, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Последний раз как я смотрел у С все хорошо с их Makefile-ами, это C++-шники как напридумывают усложнений а потом их ещё сложнее делают и чтобы компилировалось по часу.
     
  • 2.17, Аноним (17), 12:42, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В мире С/CPP

    Прочитал как "В мире СССР"

     
     
  • 3.23, Аноним (23), 19:50, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Держи нас в курсе всех твоих случаев неверного восприятия тех или иных букв
     

  • 1.6, Аноним (6), 02:35, 18/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > В режим сборки (cmake --build) добавлена опция "--parallel [jobs]" ("-j [jobs]")

    Джва года этого ждал. Заколебался выставлять переменную оружения MAKEFLAGS или как она там называется, для того, чтобы собираемые мейком сборки собирались параллельно

     
     
  • 2.7, Аноним (6), 02:37, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Еще бы прикрутили что-нибудь типа -j auto, чтобы раскрывалось в значение ядер в процессоре, чтобы не приходилось это число рассчитывать внешними скриптами или хардкодить наобум
     
     
  • 3.8, Аноним (8), 06:47, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    -j 'nproc'

    не благодари

     
     
  • 4.14, др. Аноним (?), 11:45, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > -j 'nproc'
    > не благодари

    За что?



    $ nproc
    bash: nproc: command not found
    $ gnproc
    32


     
     
  • 5.18, анон (?), 13:53, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ты перепутал с тильдой через шифт
     
     
  • 6.19, др. Аноним (?), 14:36, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > ты перепутал с тильдой через шифт

    Нет.


     
  • 4.25, Michael Shigorin (ok), 01:47, 20/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > -j 'nproc'
    > не благодари

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

    Одни неосиляторы документации костылят свои виндосистемы сборки, другие потом ещё и их обкостыливают, потому что ни -j, ни тем более -l не удосужились сделать ещё вместе с открытием того, что сборки могут быть параллельными...

     
  • 2.10, Владимир (??), 07:58, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да вроде и до этого работало
    cmake --build -- -j 8
     
     
  • 3.21, Аноним (21), 18:20, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Где-то у меня с этим были проблемы. Вроде не получалось так использовать кроссплаьформеннон - под виндой msbuild ругался на непонятный параметр.
     
  • 2.12, gergreg (?), 10:10, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    sudo apt install ninja-build
    cmake <path> -GNinja
    ninja
     
     
  • 3.20, Владимир (??), 15:26, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И что? человеку нужно по какой-то причине вызывать cmake фронтенд. Он и без ниндзи может точно так же вызывать make -j, разницы-то?
    Допустим у человека скрипты, которые в зависимости от конфига собирают ninja/msbuild/xcodebuild. не будет он же в батниках if-ы делать под каждую систему? В каком-то случае cmake --build может быть удобен (другого кейса для этой херни я придумать не могу)
     

  • 1.11, anonymous yet another (?), 08:44, 18/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > В команды cmake_minimum_required() и cmake_policy(VERSION) добавлена возможность указания диапазонов версий в форме "min...max";

    Как должны быть упорядочены по возрастанию версии 1.2.3 и 2.0.1?

     
     
  • 2.13, trolleybus (?), 11:10, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    2 > 1. Все просто (будь там хоть 1.99.98)
     
  • 2.15, Аноним (15), 12:28, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https://semver.org/
     
     
  • 3.16, yet another anonymous (?), 12:41, 18/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ничего, что они тщательно обошли сравнение 1.2.3 ~ 2.0.1? Нотация semantic versioning образует слабо упорядоченное множество в котором отношение предшествования определено не для любой пары.
     
     
  • 4.24, Аноним (24), 20:32, 19/07/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Наркоман штоли?

    "Precedence is determined by the first difference when comparing each of these identifiers from left to right as follows: Major, minor, and patch versions are always compared numerically"

     

  • 1.22, Клыкастый (ok), 18:22, 18/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Добавлен модуль FindODBC для поиска библиотеки ODBC (Open Database Connectivity);

    да блин неужели же...

     

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



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

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