The OpenNET Project / Index page

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

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

15.03.2019 11:27

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

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

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

  • Добавлена поддержка кросс-компиляции для iOS, tvOS и watchOS с использованием простых файлов toolchain;
  • Добавлен экспериментальный генератор сборочных сценариев для Visual Studio 16 2019 (протестирован в Visual Studio 2019 Preview 4). Новый генератор сильно отличается от генераторов для других версий Visual Studio и не поддерживает указание целевой платформы в имени генератора (платформа передаётся только через переменную окружения CMAKE_GENERATOR_PLATFORM). Целевая платформа по умолчанию выбирается на основании платформы текущего окружения (хост-платформы);
  • В генератор "Green Hills MULTI" добавлена поддержка библиотек объектных файлов (Object Library), возможность переименования целевых платформ и изменения свойств вывода;
  • Добавлены переменные "CMAKE_BUILD_RPATH_USE_ORIGIN" и "BUILD_RPATH_USE_ORIGIN", позволяющие использовать относительные пути для runtime (RPATH), что полезно для организации повторяемых сборок;
  • В команду "install(TARGETS)" добавлена возможность определения каталогов для установки по умолчанию в зависимости от типа целевых платформ, без использования переменной DESTINATION. В команды "install(FILES)" и "install(DIRECTORY)" добавлены новые параметры для установки в привязке к типу файлов. Данные о каталогах основываются на переменных, выставляемых модулем GNUInstallDirs, и встроенных значений по умолчанию;
  • В команды "install(CODE)" и "install(SCRIPT)" добавлена поддержка выражений генератора;
  • В команду "if()" добавлена возможность проверки переменных из кэша, определённых при помощи выражения "DEFINED CACHE{VAR}";
  • В сборочный режим "cmake --build" добавлена поддержка опций "--verbose" и "-v". В команду "cmake -E compare_files" добавлена опция "--ignore-eol" для игнорирования маркеров конца строки (LF или CRLF) при сравнении;
  • Прекращена поддержка запуска CMake в Windows XP и Windows Vista, для работы на платформе Windows теперь требуется как минимум Windows 7.


  1. Главная ссылка к новости (https://blog.kitware.com/cmake...)
  2. OpenNews: Релиз системы сборки CMake 3.13
  3. OpenNews: Проект Qt прекращает разработку сборочной системы Qbs в пользу CMake
  4. OpenNews: Выпуск системы сборки пакетов Open Build Service 2.8 с поддержкой технологии Snap
  5. OpenNews: Разработчик языка XL опубликовал новую сборочную систему build
  6. OpenNews: Выпуск сборочной системы Meson 0.50
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/50327-cmake
Ключевые слова: cmake, make, build
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (35) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:51, 15/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –13 +/
    > Прекращена поддержка запуска CMake в Windows XP и Windows Vista, для работы на платформе Windows теперь требуется как минимум Windows 7

    Печально, конечно. Я устал бегать с ОС на ОС и давно хочу стабильности. Один вечный Windows на все времена

    Главное чтобы бинарные сборки под Linux продолжали собирать в Debian 6. Раньше собирали в каком-то старом CentOS, но начиная с CMake 3.0 обновили билд-ферму до Debian 6. В мейл-листах мне сказали, что это было сделано, чтобы все необходимые вызовы Glibc были доступны. Хотя из исходников CMake 3.x продолжает компилироваться и в CentOS 5 с Glibc 2.4

     
     
  • 2.6, Аноним (6), 13:45, 15/03/2019 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Ну так и пользуйтесь одной вечной windows xp и старым ПО, проблема-то в чём?
     
     
  • 3.26, trdm (ok), 08:19, 16/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну так и пользуйтесь одной вечной windows xp и старым ПО, проблема-то в чём?

    GitHub требует браузер обновить. А на XP крайний: 5Х.0.1.

     
     
  • 4.34, Аноним (34), 10:28, 17/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ради такой благородной цели можно и руками собрать свежачок.
     
     
  • 5.37, Аноним (37), 16:29, 17/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Просто ИТ-потреблятели не принимают прописанные им лекарства. Вместо этого употребляют Яблочное смузи.
     
  • 5.40, пох (?), 19:46, 18/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    а он не собирается - версия cmake манки-кодерами вбивается в requirements- разумеется, самая распоследняя, которую только эта обезьянка сумела у себя завести, хотя никакими новыми фичами ни разу не пользовалась (а если и пользовалась, то нахрен они не нужны), а еще там и пихон какой-нибудь будет гвоздями прибит.

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

     
  • 2.11, IRASoldier (?), 16:02, 15/03/2019 [^] [^^] [^^^] [ответить]  
  • –5 +/
    >Один вечный Windows на все времена

    Ставьте 10-ку.

     

  • 1.5, trolleybus (?), 12:18, 15/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +16 +/
    > 3.14

    В день числа Пи зарелизили, однако

     
     
  • 2.18, Аноним (37), 22:16, 15/03/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    И правильно, ведь это 3.141ц.
     
  • 2.35, Аноним (35), 13:49, 17/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    14.03 вы хотели сказать.
     
     
  • 3.41, adolfus (ok), 12:26, 19/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    14.88
     

  • 1.9, Ложечка (?), 15:42, 15/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Линковку в режиме whole archive когда сделают? Джва года жду.
     
     
  • 2.13, Аноним (13), 19:18, 15/03/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Можно аргументы линкеру совать прямо в списке библиотек, так работает. Но выглядит криво, конечно.
     
  • 2.19, Аноним (19), 23:22, 15/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Прочитал https://stackoverflow.com/questions/805555/ld-linker-question-the-whole-archiv и так и не понял зачем оно может быть кому-то нужно в реальной жизни. Автор вопроса тоже, очевидно, как и авторы CMake.
     
     
  • 3.38, Ложечка (?), 18:47, 17/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы статическую либу не разбирало на отдельные объектники, которые друг без друга не работают (гугли С++ статическая регистрация). Сейчас приходится дополнительный линк-враппер делать - add_library(INTERFACE), делать ей set_property(INTERFACE_LINK_OPTIONS) с ключами для каждого ликонвищика и прописывать зависимость между линк-враппером и либой. Но зачем мне этим всем заниматься, если это всё может cmake нагенерировать? Тем более что про существование whole archive он уже явно в курсе.
     

  • 1.10, Аноним (10), 15:50, 15/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > В команду "install(TARGETS)" добавлена возможность определения каталогов для установки по умолчанию

    Шикарно.

    > В сборочный режим "cmake --build" добавлена поддержка опций "--verbose" и "-v"

    И это.

     
  • 1.12, Анонимс (?), 17:35, 15/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что быстрее и удобнее использовать при сборке больших проектов: autotools, cmake или meson?
     
     
  • 2.14, Sauron (??), 20:24, 15/03/2019 [^] [^^] [^^^] [ответить]  
  • –8 +/
    cargo
     
     
  • 3.23, DerRoteBaron (ok), 01:08, 16/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А туда таки сделали возможность выполнить что-то в post-build или post-install?
     
  • 2.16, Аноним (16), 22:11, 15/03/2019 [^] [^^] [^^^] [ответить]  
  • –5 +/
    scons. не благодарите.
     
     
  • 3.20, Аноним (-), 23:26, 15/03/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Скунс - это если совсем некуда торопиться. Карго (и вообще ржавчина) - туда же.
     
  • 3.32, Cradle (?), 19:55, 16/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    а скажите, этот scons умеет с разными кросс- тулчейнами в подпроектах работать? На самом деле cmake гадость та еще, но и без него никак, проекты должны собираться для пары контроллеров + хост, 2-3 архитекруры за раз с общими зависимостями
     
  • 2.22, Аноним (22), 00:44, 16/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Голый make?
     
     
  • 3.28, anonimm (?), 09:51, 16/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    На каждой системе ручками прописывать пути к библиотекам? Спасибо.
    Лучше пусть это делает maintainer, когда создаёт cmake-привязки.
     
     
  • 4.33, Аноним (34), 01:26, 17/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Пути к библиотекам можно получить и на голом make:



    CPPFLAGS += $(shell pkg-config --cflags-only-I $(SUPERDUPERLIB))
    CFLAGS += $(shell pkg-config --cflags-only-other $(SUPERDUPERLIB))
    LDFLAGS += $(shell pkg-config --libs $(SUPERDUPERLIB))



    Хотя это, конечно, всё равно куда менее переносимо и, кажется, GNU make only.
     
  • 2.24, leap42 (ok), 06:37, 16/03/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    meson+ninja

    гляньте на опыт gnome/mesa, они сразу дропнули autotools как meson заработал (ибо небо и земля)

     
  • 2.30, Аноним (34), 16:56, 16/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Точно не autotools. Мой выбор — cmake, но на meson просто не хочу смотреть из-за зависимости от питона.
     

  • 1.17, Аноним (37), 22:14, 15/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    >Прекращена поддержка запуска CMake в Windows XP и Windows Vista, для работы на платформе Windows теперь требуется как минимум Windows 7.

    CMake  - одна из худших систем сборки. Баг-трекер и пулл-реквесты требуют отдельной регистрации на сайте kitware, а регистрация - за рекапчей, что есть сообщение "шли бы вы отсюда, срaть мы хотели на ваши баг репорты и пулл-реквесты, мы систему исключительно для себя пилим".

     
     
  • 2.25, Аноним (25), 07:45, 16/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В чем твоя проблема? Ты хотел без рекапчи тонну ботов регистрировать или авторизовываться через зонды?
     
     
  • 3.27, Аноним (37), 08:38, 16/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Я ткого не утверждал. Вы зачем дешевую демагогию применяете?
     
     
  • 4.29, Аноним (25), 12:33, 16/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Так в чем претензия то?
     
  • 2.31, Аноним (34), 16:59, 16/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то там есть вход с гугловским или гитхабовским аккаунтом, но ты ведь всё равно найдёшь причину ничего не репортить.
     
     
  • 3.36, Аноним (37), 16:27, 17/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Есть. С обязательным предоставлением доступа к почте в ГХ-аккаунте. А не проследовать ли им на йух с такими запросами?
     
     
  • 4.39, Аноним (34), 22:49, 17/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Я же говорил: повод не репортить всегда найдётся, было бы нежелание.
     

  • 1.42, Аноним (42), 13:00, 19/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если это используется в RectalOS, врядли это показатель чего-то хорошего.
     

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



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

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