The OpenNET Project / Index page

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

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

12.04.2017 09:16

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

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

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

  • Добавлена поддержка сборки проектов на языке CUDA через генераторы Makefile и Ninja для Linux, macOS и Windows;
  • Добавлена поддержка сборки проектов на языке C# через генератор сценариев сборки для Visual Studio;
  • В средствах для настройки параметров компилятора (Compile Features) реализована возможность определения мета-флагов, которые изменяют режим работы компилятора в привязке к специфичным языковым стандартам, например, "cxx_std_11" для C++ 11;
  • "Compile Features" теперь учитывает особенности стандарта C++ 17, но набор мета-флагов "cxx_std_17" для него пока остаётся пустым;
  • В "Compile Features" добавлена поддержка особенностей компиляторов Intel C++ версий с 12.1 по 17.0 для UNIX и Windows;
  • В генераторы сценариев сборки для Visual Studio 2013+ в блок "CMAKE_GENERATOR_TOOLSET" добавлена поддержка опции "host=x64" для указания использования 64-разрядного инструментария на 64-разрядных системах;
  • В генераторах для Visual Studio обеспечен импорт в генерируемый проект файлов MSBuild через передачу в target_link_libraries() файлов с расширением .targets;
  • В команду try_compile() добавлена опция для выбора языкового стандарта, который будет использоваться в генерируемом тестовом проекте. В try_compile() также теперь учитывается переменная окружения CMAKE_CXX_STANDARD;
  • Добавлено свойство "BUILD_RPATH" и связанная с ним переменная "CMAKE_BUILD_RPATH", позволяющие указать собственный путь RPATH для сохранения исполняемых файлов в процессе сборки;
  • Добавлено новое выражение генератора "$<IF:cond,true-value,false-value >", возвращающее значение "true-value", если условие "cond" истинно (1) или "false-value" - ложно (0);
  • В свойство "COMPILE_FLAGS" добавлена поддержка выражений генератора.


  1. Главная ссылка к новости (https://blog.kitware.com/cmake...)
  2. OpenNews: Выпуск системы сборки CMake 3.7
  3. OpenNews: Разработчики из компании Google открыли код системы сборки Ninja
  4. OpenNews: Компания Google представила первый выпуск открытой системы сборки Bazel
  5. OpenNews: Twitter представил первый значительный выпуск системы сборки Pants
  6. OpenNews: Выпуск системы сборки GNU Make 4.2
Лицензия: CC-BY
Тип: Программы
Ключевые слова: cmake, make, build
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (38) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 09:46, 12/04/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Полезная инфа по CMake:

    https://github.com/toeb/moderncmake

    https://www.slideshare.net/DanielPfeifer1/cmake-48475415

     
     
  • 2.3, Аноним (-), 11:02, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >https://github.com/toeb/moderncmake/blob/master/sample03/CMakeLists.txt
    >https://github.com/toeb/moderncmake/blob/master/sample03/external/Readme.md

    Ясно, понятно.

     
     
  • 3.4, Аноним (-), 11:19, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https://github.com/toeb/moderncmake/raw/master/Modern%20CMake.pdf
     
     
  • 4.5, Andrey Mitrofanov (?), 11:42, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > https://github.com/toeb/moderncmake/raw/master/Modern%20CMake.pdf

    У модного паренька нет правильной ссылки/хостилки http://thetoeb.de/2016/08/30/modern-cmake-presentation/ с человечим Content-Type: application/pdf или как там, а не даунлоадом или веб-ещё-0 ги-хаба или гу-дока?  ...."Ясно, понятно."

     

  • 1.2, Аноним (-), 10:38, 12/04/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    > "Compile Features" теперь учитывает особенности стандарта C++ 17, но набор мета-флагов "cxx_std_17" для него пока остаётся пустым;

    Какое дело системе сборки до специфичных флагов компилятора?

     
     
  • 2.6, Аноним (-), 11:44, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > Какое дело системе сборки до специфичных флагов компилятора?

    Ты не поверишь -- система сборки генерирует мэйкфайлы, которые будут вызывать компиляторы со специфичными флагами.

     
     
  • 3.7, Аноним (-), 12:03, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    >

    Если не дошло, то разъясню: специфичные флаги компилятору --- прерогатива автора. И должны указываться автором. Для передачи флагов CMAKE_C_FLAGS вполне достаточно. Не дело сборочной системы совать [специфичные] флаги по своему усмотрению, а именно эту попытку я и подозреваю.

     
     
  • 4.8, Аноним (-), 12:25, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это так, если вы хотите затачивать ваши сценарии подо все компиляторы на свете. А кто-то просто хочет сказать "включить C++14", а система сборки должна сама понять, что нужно подсунуть конкретному компилятору, чтобы выполнить это требование.
     
     
  • 5.11, Andrey Mitrofanov (?), 13:12, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Это так, если вы хотите затачивать ваши сценарии подо все компиляторы на
    > должна сама понять, что нужно подсунуть конкретному компилятору, чтобы выполнить это

    Автокрэп не нужон, говорили https://xkcd.com/927/ они...

     
     
  • 6.14, BlackRaven86 (ok), 13:21, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Кто говорил?
    Когда-то был нужен, сейчас его заменил CMake.
     
     
  • 7.15, Аноним (-), 13:44, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Когда-то был нужен, сейчас его заменил CMake.

    Это точно ;) --- cmake реализует идеи аналогичные autotools и порождает проблемы, аналогичные проблемам autotools.

    Он пока не добрался до уровня крапа вроде libtool; и авторы, использующие CMake нечасто тащат такое чудесное чудо как glib. Собственно, пока это и уменьшает проблемность.

     
     
  • 8.16, ваноним (?), 14:16, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    да ваще, жуть а месье знает что-нибудь лучше или может сам сделал что-нибудь л... текст свёрнут, показать
     
     
  • 9.17, Аноним (-), 14:21, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Да ... текст свёрнут, показать
     
     
  • 10.19, BlackRaven86 (ok), 15:08, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Примеры в студию ... текст свёрнут, показать
     
     
  • 11.23, Аноним (-), 18:32, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А площадка-то соответствует ... текст свёрнут, показать
     
     
  • 12.26, BlackRaven86 (ok), 18:47, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А это и не важно Вы утверждаете, что знаете или сделали лучше Предоставьте док... текст свёрнут, показать
     
  • 11.29, ... (?), 12:16, 13/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Meson ... текст свёрнут, показать
     
     
  • 12.30, Аноним (-), 14:02, 13/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо за ссылку, но здесь я сильно расхожусь с авторами meson уже на уровне це... текст свёрнут, показать
     
  • 12.31, 35е63ку (?), 00:51, 14/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    На помойку ибо не взлетит Кросплатформленная система сборки не должна зависеть ... текст свёрнут, показать
     
     
  • 13.32, Аноним (-), 16:13, 14/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Странно, я собирал готовый пакет на тридцатник Стольник - это если включить те... текст свёрнут, показать
     
     
  • 14.36, 35е63ку (?), 02:55, 20/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    У разработчиков питона нужно спросить ... текст свёрнут, показать
     
  • 13.34, ваноним (?), 21:29, 16/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Поставьте себе уже человеческую ОСь ЗЫ dev-lang python-2 7 13 Total... текст свёрнут, показать
     
     
  • 14.37, 35е63ку (?), 02:55, 20/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален ... текст свёрнут, показать
     
  • 12.35, ваноним (?), 21:30, 16/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    чем эта поделка принципиально лучше cmake ... текст свёрнут, показать
     
  • 5.39, adolfus (ok), 15:00, 27/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    И она автоматом подключит для винд гoвнoпpиложeние "K" про "безопасные строки".
     
  • 4.10, Аноним (-), 13:03, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > специфичные флаги компилятору --- прерогатива автора

    Как расшифровывается буковка C в слове cmake, ты, видимо, не в курсе?
    Автор не знает заранее, каким компилятором будет собираться код, и какие специфичные флаги этот компилятор понимает. Подставить эти флаги — дело как раз системы сборки. И делает она это, разумеется, не по своему усмотрению, а на основании значения переменной CMAKE_CXX_STANDARD и/или CMAKE_CXX_STANDARD_REQUIRED, которую устанавливает как раз таки автор.

     
  • 2.9, BlackRaven86 (ok), 12:57, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Как включить в кроссплатформенном проекте поддержку C++14, например?
     

  • 1.12, Аноним (-), 13:12, 12/04/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > CMake примечателен предоставлением простого языка сценариев

    Да, язык там знатный. Ознакомившись с ним, выбрал autotools.

     
     
  • 2.13, Аноним (-), 13:18, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    У autotools-то всё зашибок с синтаксисом, ага. Чудесные макросы, чудесный выхлоп Makefile, - всё замечательно!
     
  • 2.18, Аноним (-), 15:06, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    на БАСИК похож же)
     
  • 2.20, Аноним (-), 16:17, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    M4 чувак!!! Застрелиться.
     
     
  • 3.22, Аноним (-), 17:55, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Анон который не смог в M4 - не анон.

    1337

     
     
  • 4.38, ваноним (?), 20:40, 21/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Не анон тот, кто смог М4 и... ему понравилось.
     
  • 2.21, Аноним (-), 16:27, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Hint: прежде чем выбирать какой-то инструмент, ознакомься с _этим_ инструментом, а не с конкурирующим.
     
  • 2.24, Аноним (-), 18:35, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    лучше посмотри на Ninja
     
     
  • 3.28, Аноним (-), 04:19, 13/04/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    лучше посмотри на цмейк, паря. https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html

    The cmake(1) command-line tool --help output lists available generators on the current platform.
    ...
    Ninja
    ...

     

  • 1.25, Аноним (-), 18:44, 12/04/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто-нибудь знает область применения $‹IF:cond,true-value,false-value ›? Не совсем понятно, для чего это сделано.
     
     
  • 2.27, Аноним (-), 21:35, 12/04/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Вероятно, для передачи значений сторонним системам сборки и прочим программам, в которых булевый тип имеет представление значений не такое как cmake

    True/False
    1/0
    Enable/Disable

     

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



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

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