The OpenNET Project / Index page

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

Релиз систем сборки CMake 3.21 и Meson 0.59

18.07.2021 23:08

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

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

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

  • Добавлена полноценная поддержка языка программирования HIP (Heterogeneous-Computing Interface for Portability), диалекта языка C++, нацеленного на упрощение преобразования приложений CUDA в переносимый код C++.
  • Добавлен генератор сборочных сценариев для Visual Studio 17 2022, базирующийся на предварительном выпуске Visual Studio 2022 Preview 1.1.
  • В генераторах сборочных сценариев Makefile и Ninja добавлены свойства C_LINKER_LAUNCHER и CXX_LINKER_LAUNCHER, при помощи которых можно организовать запуск вспомогательных утилит, осуществляющих запуск компоновщика, таких как статические анализаторы. Генератор запустит указанные утилиты, передав им название компоновщика и его аргументы.
  • В свойствах "C_STANDARD" и "OBJC_STANDARD", а также в средствах для настройки параметров компилятора (Compile Features), добавлена поддержка спецификаций C17 и C23.
  • В утилиту cmake добавлена опция "--toolchain <path/to/file>" для определения пути к инструментарию.
  • Обеспечена подсветка типов сообщений, выводимых на терминал.
  • Добавлена поддержка компилятора Fujitsu.
  • В команде "foreach()" обеспечена изоляция переменных цикла внутри цикла.

Дополнительно можно отметить выпуск сборочной системы Meson 0.59, которая используется для сборки таких проектов, как X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME и GTK. Код Meson написан на языке Python и поставляется под лицензией Apache 2.0. Поддерживается кросс-компиляция и сборка в Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS и Windows с использованием GCC, Clang, Visual Studio и других компиляторов. Возможна сборка проектов на различных языках программирования, включая C, C++, Fortran, Java и Rust. Вместо утилиты make при сборке по умолчанию применяется инструментарий Ninja, но возможно применение и других бэкендов, таких как xcode и VisualStudio.

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

Основные новшества Meson 0.59:

  • Добавлена поддержка языка Cython (расширенный вариант Python, нацеленный на упрощение интеграции с кодом на языке Си).
  • Добавлены ключевые слова "unescaped_variables" и "unescaped_uninstalled_variables" для определения переменных в pkgconfig без экранирования пробелов символом "\".
  • Добавлена поддержка wrc (Wine Resource Compiler).
  • Реализована возможность генерации проектов для Visual Studio 2012 и Visual Studio 2013.
  • Все команды, связанные с обработкой субпроектов, теперь по умолчанию запускают каждый субпроект параллельно. Число параллельно работающих процессов определяется параметром "--num-processes".


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


Обсуждение (38) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, pashev.me (?), 23:47, 18/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Это вы специально в одной новости разместили?

    Для сборки с autotools необходимы только шел, мэйк и компиляторы.

     
     
  • 2.2, help_wp MySQL default (?), 00:02, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Для сборки мнеобходимы только шел, мэйк и компиляторы.

    Ну, собери с autotools FreeCAD

     
     
  • 3.3, pashev.me (?), 00:07, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Давайте почесноку. Пусть фанаты симэйка соберут сначала компилятор си++, а потом симэйк.
     
     
  • 4.25, Аноним (25), 12:38, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Нефанат: А в чём сложность? Для сборки g++ cmake не требуется.
     
     
  • 5.42, Аноним (-), 03:12, 26/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Будешь бутстрапать новую платформу - узнаешь :)
     
  • 4.31, Аноним (31), 13:21, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > используемого в таких проектах, как KDE, LLVM/Clang
     
  • 4.39, Аноним (39), 07:10, 20/07/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Давайте почесноку. Пусть фанаты симэйка соберут сначала компилятор си++, а потом симэйк.

    Собираю Clang, собираю CMake. Вопросы?

     
  • 4.41, заминированный тапок (ok), 17:20, 21/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >Давайте почесноку. Пусть фанаты симэйка соберут сначала компилятор си++, а потом симэйк.

    Давайте почесноку. Пусть фанаты программного кода соберут сначала железо, а потом %наименование_программного_продукта%

     
  • 2.19, Аноним (19), 08:10, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Оно не работает в Windows. Как мне собрать мультиплатформенный проект?
     
     
  • 3.21, lockywolf (ok), 11:05, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    См главу 17:

    https://www.penguinrandomhouse.com/books/600402/autotools-2nd-edition-by-john-

     
     
  • 4.22, Аноним (19), 11:51, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А ну да, как я забыл, можно в квартиру попадать через форточку:
    Устанавливать msys2 и mingw-w64 или даже кросс компайлить, и потом бороться с непонятными багами
    mingw-w64 на Windows системе.

    Мне лично нужна поддержка (нативного) компилятора от Microsoft MSVC. И CMake это умеет.

    P.S.
    Мне кажется, не следует кидать ссылки за paywall'ом . Это не вежливо. Достаточно было этого
    https://stackoverflow.com/questions/65555603/how-to-produce-a-configure-script

     
     
  • 5.23, lockywolf (ok), 11:56, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Каким-таким paywall? Книга элементарно ищется на worldcat (правда, без оглавления, поэтому и ссылка на ресурс, где оглавление опубликовано), который и покажет, где находится ближайшая к Вам библиотека, в которой с ней можно ознакомиться.
     
  • 4.32, anonymous (??), 13:46, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Нежизнеспособно. Autotools не поддерживают тулчейны, которых нет в msys2, а значит, собранный пакет будет с оверхедом из библиотек совместимости из msys2 окружения. Статический бинарь сложного проекта собрать вообще невозможно.
     
     
  • 5.36, ip1982 (ok), 20:33, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Autotools не поддерживают тулчейны, которых нет в msys2

    Бгггг :)

     
  • 5.37, pashev.me (?), 00:35, 20/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Статический бинарь сложного проекта собрать вообще невозможно.

    Бггг. Система сборки тут вообще ни при чём. Но раз уж тема затронута: как с симэйком собирать статические и динамические библиотеки сразу?

     
     
  • 6.38, lockywolf (ok), 05:23, 20/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >> Статический бинарь сложного проекта собрать вообще невозможно.
    > Бггг. Система сборки тут вообще ни при чём. Но раз уж тема
    > затронута: как с симэйком собирать статические и динамические библиотеки сразу?

    А нельзя один и тот же файл собрать и с BUILD_SHARED_LIBS, и без?

     

  • 1.5, Аноним (5), 00:09, 19/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >В свойствах "C_STANDARD" и "OBJC_STANDARD", а также в средствах для настройки параметров компилятора (Compile Features), добавлена поддержка спецификаций C17 и C23.

    Не прошло и 10 лет с момента выпуска стандартов.

     
     
  • 2.27, нах.. (?), 12:42, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Любитель обмазаться самым свеженьким и пахнущим?
     
  • 2.30, Аноним (25), 12:53, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >C17

    Точно ещё не прошло.
    >C23

    2023 ещё не наступил.

     

  • 1.6, Аноним (6), 00:23, 19/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >Вместо утилиты make при сборке по умолчанию применяется инструментарий Ninja

    Теперь делаешь не ты, теперь всё делает ниндзя из додзё гугл в твоём компьютере.

     
  • 1.7, Аноним (7), 01:51, 19/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >systemd, GStreamer, Wayland, GNOME и GTK

    Знатно пахнуло...

     
     
  • 2.9, Аноним (6), 02:00, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ребята словно специально хотят разжечь споры на форумах и интернетах своим подделием. Дать ему популярность. Но где же тогда rust?
     

  • 1.11, йо ж (?), 02:35, 19/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > минимальным числом зависимостей

    минимальней некуда:

    > ldd 'which cmake'

    /usr/local/bin/cmake:
    libexecinfo.so.1 => /usr/lib/libexecinfo.so.1 (0x80083b000)
    libexpat.so.1 => /usr/local/lib/libexpat.so.1 (0x800841000)
    libz.so.6 => /lib/libz.so.6 (0x800872000)
    libarchive.so.13 => /usr/local/lib/libarchive.so.13 (0x80088e000)
    libcurl.so.4 => /usr/local/lib/libcurl.so.4 (0x800962000)
    libjsoncpp.so.24 => /usr/local/lib/libjsoncpp.so.24 (0x8009da000)
    libuv.so.1 => /usr/local/lib/libuv.so.1 (0x800a1d000)
    librhash.so.0 => /usr/local/lib/librhash.so.0 (0x800a4d000)
    libthr.so.3 => /lib/libthr.so.3 (0x800a83000)
    libc++.so.1 => /usr/lib/libc++.so.1 (0x800ab1000)
    libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x800b86000)
    libm.so.5 => /lib/libm.so.5 (0x800ba9000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x800be0000)
    libc.so.7 => /lib/libc.so.7 (0x800bfa000)
    libelf.so.2 => /lib/libelf.so.2 (0x80100e000)
    libcrypto.so.111 => /lib/libcrypto.so.111 (0x80102a000)
    liblzma.so.5 => /usr/lib/liblzma.so.5 (0x801328000)
    liblz4.so.1 => /usr/local/lib/liblz4.so.1 (0x801355000)
    libbz2.so.4 => /usr/lib/libbz2.so.4 (0x801388000)
    libssl.so.11 => /usr/local/lib/libssl.so.11 (0x80139e000)
    libcrypto.so.11 => /usr/local/lib/libcrypto.so.11 (0x801436000)
    libdl.so.1 => /usr/lib/libdl.so.1 (0x80172c000)
    libmd.so.6 => /lib/libmd.so.6 (0x801730000)

     
     
  • 2.14, Аноним (14), 03:43, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А curl то ему зачем?
     
     
  • 3.17, sn (??), 04:17, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Как минимум для https://cmake.org/cmake/help/latest/module/FetchContent.html
    Есть ещё https://cmake.org/cmake/help/v3.0/module/ExternalProject.html
     
  • 2.24, Zenitur (ok), 12:13, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В сусе есть cmake-minimal, собранный без лишнего.
     

  • 1.12, user90 (?), 03:03, 19/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > нет привязки к M4, Perl

    Скажите, а это что, хорошо? ;)

     
     
  • 2.13, c0rax (ok), 03:21, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Скажите, а это что, хорошо? ;)

    Это замечательно :)

     
  • 2.15, Аноним (7), 03:46, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Это виндовозно.
     
  • 2.28, Аноним (25), 12:48, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    То, что нет к Perl - здорово.
     

  • 1.18, lockywolf (ok), 05:47, 19/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    А когда в cmake появится поддержка rust?
     
     
  • 2.20, anonymous (??), 09:33, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Зачем? Он своим карго справляется. Ты бы еще поддержку PHP попросил.
     
  • 2.29, Аноним (25), 12:50, 19/07/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И нет поддержки сборки под Redox.
     
  • 2.40, Аноним (39), 07:15, 20/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А джава скрипта?
     

  • 1.26, нах.. (?), 12:39, 19/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > unescaped_variables" и "unescaped_uninstalled_variables

    Видать слабо для консистентности назвать unescaped_installed_variables. Ну этож любители пообмазываться пистончикками.

     
  • 1.33, Аноним (33), 15:37, 19/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Visual Studio 2022 Preview 1.1.

    В трекере ошибок CMake есть рекомендация по запуску с Preview 2 - указывать версию ToolChain (-T v143), или установить версию первого от предыдущей версии студии.

    >Brad King @brad.king · Jul 15, 2021
    >For reference, VS 2022 preview 2 can partly work with CMake 3.21.0 by:
    > Running with -T v143, or
    > Installing the v142 (v14.29-16.11) build tools component.

    https://gitlab.kitware.com/cmake/cmake/-/issues/22339#note_985691

     
  • 1.34, ананоша (?), 16:14, 19/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Cmake такое УГ что ппц. Лучше использовать что-то другое
     
  • 1.35, Аноним (35), 16:32, 19/07/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И кто-то пробовал собирать Гэ-стример на винде мезоном?
     

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



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

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