The OpenNET Project / Index page

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

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

20.07.2019 05:56

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

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

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

  • В генератор сборочных сценариев на базе инструментария Ninja добавлена начальная поддержка языка Swift, развиваемого компанией Apple;
  • Добавлена поддержка варианта компилятора Clang для Windows, осуществляющего сборку с ABI MSVC, но использующего опции командой строки в стиле GNU;
  • Добавлены переменные CMAKE_MSVC_RUNTIME_LIBRARY и MSVC_RUNTIME_LIBRARY для выбора runtime-библиотек, используемых компиляторами на базе ABI MSVC (MS Visual Studio);
  • Для компиляторов, подобных MSVC, в CMAKE__FLAGS по умолчанию прекращено перечисление флагов управления выводом предупреждений, таких как "/W3";
  • Добавлено выражение генератора "COMPILE_LANG_AND_ID:" для определения опций компилятора для целевых файлов, применяющих переменные CMAKE__COMPILER_ID и LANGUAGE для каждого файла с кодом;
  • В выражения генератора C_COMPILER_ID, CXX_COMPILER_ID, CUDA_COMPILER_ID, Fortran_COMPILER_ID, COMPILE_LANGUAGE, COMPILE_LANG_AND_ID и PLATFORM_ID добавлена поддержка сопоставления одного значения со списком, элементы в котором разделены запятой;
  • Добавлена переменная CMAKE_FIND_PACKAGE_PREFER_CONFIG, при которой вызов find_package() будет в первую очередь выполнять поиск файла конфигурации пакета, даже если доступен модуль поиска;
  • Для интерфейсных библиотек добавлена поддержка установки свойств PUBLIC_HEADER и PRIVATE_HEADER, задаваемые которыми заголовки могут устанавливаться при помощи команды install(TARGETS) через передачу аргументов PUBLIC_HEADER и PRIVATE_HEADER;
  • Добавлена переменная CMAKE_VS_JUST_MY_CODE_DEBUGGING и целевое свойство VS_JUST_MY_CODE_DEBUGGING для включения режима "Just My Code" в отладчике Visual Studio при компиляции с использованием MSVC cl 19.05 и более новых версий;
  • Переработан модуль FindBoost, который теперь более целостно отрабатывает в режимах Config и Module при наличии других модулей поиска;
  • В команду message() добавлена поддержка типов NOTICE, VERBOSE, DEBUG и TRACE;
  • Команда "export(PACKAGE)" теперь ничего не делает пока явно не будет включена через переменную CMAKE_EXPORT_PACKAGE_REGISTRY.


  1. Главная ссылка к новости (https://blog.kitware.com/cmake...)
  2. OpenNews: Релиз системы сборки CMake 3.14
  3. OpenNews: Проект Qt прекращает разработку сборочной системы Qbs в пользу CMake
  4. OpenNews: Компания Apple представила язык программирования Swift 5
  5. OpenNews: Выпуск сборочной системы Meson 0.51
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/51135-cmake
Ключевые слова: cmake, make, build
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (19) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, ПерлухаБратуха (?), 07:28, 20/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Годная тулза
     
     
  • 2.12, Аноним (12), 19:26, 20/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Это ты еще не видел Meson
     
     
  • 3.13, Аноним (13), 02:10, 21/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Это ты еще не видел Meson

    Погоди, он не успевает. Вот закончит переводить свои проекты с autotools на cmake, потом и на мезон можно начать миграцию.

     
     
  • 4.19, Аноним (19), 15:41, 22/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Как бы к тому времени на замену мезону не придумали очередную стильномодномолодёжную систему сборки. :)
     

  • 1.2, leap42 (ok), 09:36, 20/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    > CMake примечателен предоставлением простого языка сценариев

    проще чем autotools ещё не значит простого...

     
     
  • 2.5, Аноним (5), 11:08, 20/07/2019 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Сам по себе язык там — проще некуда. Проще не вообще autocrap, а любого из используемых в autocrap (m4, shell, make).
     
     
  • 3.10, Michael Shigorin (ok), 16:01, 20/07/2019 [^] [^^] [^^^] [ответить]  
  • –7 +/
    http://xkcd.com/927/
     

  • 1.3, Аноним (3), 09:41, 20/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Всё лишь бы не фиксить тонну багов, оставленных на официальном GitLab. И это притом, что далеко не каждый будет в этом рекапчном г0вне регистрироваться чтобы оставить баг.
     
  • 1.4, Аноним (5), 11:01, 20/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > добавлена поддержка сопоставления одного значения со списком, элементы в котором разделены запятой

    А чего так странно? Вроде ведь в обычных списках в качестве разделителя применяется точка с запятой. Или ошибка в release notes?

     
  • 1.6, Zenitur (ok), 12:19, 20/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Мейнтейнер cmake в openSUSE - чудак. Сначала добавил зависимость от пакета rhash. Потом из пакета rhash убрал поддержку SLES 11 (ещё до окончания основной поддержки). Я внёс изменения, чтобы rhash собрался в SLES 11, а следовательно и cmake. Мейнтейнер их принял. Другой мейнтейнер их откатил с комментарием "я не хочу видеть поддержку SLES 11 в своих пакетах"
     
     
  • 2.8, пох. (?), 14:31, 20/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    собственно, то что такие "хотелки" в принципе возможны, и горе-майнтейнер сразу после такого выступления не покидает площадку "при помощи ноги", говорит о том, что на suse можно спокойно ставить крест. На open точно, а на sles...ну, учитывая что без open они нежизнеспособны, и тот патч им даже и прислать некуда, видимо, тоже.

    жаль, хорошая была система, пока ее делали пять чехов и полтора немца на деньги novell.

     
     
  • 3.11, IRASoldier_registered (ok), 18:53, 20/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >на suse можно спокойно ставить крест

    https://www.dedoimedo.com/computers/opensuse-leap-15-1.html

    А ведь Leap по идее должна быть избавлена от шероховатостей Tumbleweed. И это, по идее, SUSE. Но увы, уже не _та самая_.

     
  • 2.9, Аноним (5), 15:40, 20/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Форкни и собери на OBS, делов-то.
     

  • 1.7, Аноним (-), 13:55, 20/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    Что ни придумают лишь бы Cargo не использовать.
     
     
  • 2.15, Аноним (3), 01:53, 22/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не все хотят учвствовать в культе карго.
     
     
  • 3.17, Andrey Mitrofanov_N0 (??), 10:17, 22/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Не все хотят учвствовать в культе карго.

    Ога, многомиллионы беженцев, пострадавших от культа...
    ...табуляции в Makefile, отрабатывают похлёбку в лагерях cmake, рассказывая про свои неимоверные страдания под игом белым каскам,  --  в ожидании политубежища в...
    ...Свободном Мире  meson.  <///>

     

  • 1.14, Аноним (14), 09:27, 21/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для меня самое значительное изменение из всех это:

    The file(REMOVE) and file(REMOVE_RECURSE) commands were changed to ignore empty arguments with a warning instead of treating them as a relative path and removing the contents of the current directory.

    Как же дико это бесило при отладке скриптов.

     
     
  • 2.16, Аноним (5), 09:52, 22/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ни разу этим не пользовался. Зачем что-то удалять во время сборки?
     
     
  • 3.18, Andrey Mitrofanov_N0 (??), 10:19, 22/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Ни разу этим не пользовался. Зачем что-то удалять во время сборки?

    Чтобы наказать неверных,...  не перешедших на Наилучшую Наиновейшую v$( x + -.00001) [I] ! [/I]

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



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

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