LINUX.ORG.RU

Вышла новая версия CMake 3.16.0

 , ,


1

4

Вышла новая версия популярной системы сборки CMake 3.16.0 и сопутствующих утилит CTest и CPack, облегчающих тестирование и сборку пакетов соответственно.

Основные изменения:

  • CMake теперь поддерживает Objective-C и Objective-C++. Поддержка включается добавлением OBJC и OBJCXX в project() или enable_languages(). Таким образом, *.m- и *.mm-файлы будут компилироваться как Objective-C или С++, иначе, как и ранее, будут считаться исходными файлами C++.

  • Добавлена команда target_precompile_headers(), указывающая список прекомпилированных заголовочных файлов для цели.

  • Добавлено свойство цели UNITY_BUILD, указывающее генераторам объединять исходные файлы для ускорения сборки.

  • Команды find_*() теперь поддерживают новые переменные, контролирующие поиск.

  • Команда file() теперь может рекурсивно выдавать список библиотек прилинкованных к библиотеке или исполняемому файлу с подкомандой GET_RUNTIME_DEPENDENCIES. Эта подкоманда заменяет собой GetPrerequisites() .

  • CMake теперь имеет встроенные команды true и false, вызываемые через cmake -E, а опция --loglevel теперь устарела и будет переименована в --log-level.

>>> Подробности

★★★★★

Проверено: cetjs2 ()
Последнее исправление: a1batross (всего исправлений: 2)

Ответ на: комментарий от EXL

уже перешли

уже - это 15 лет назад? перешли - это не перешли? блендер собирался обычным гмейком, ещё там был сконс. потом добавили симейк и теперь он конфигурируется симейком и собирается гмейком. сконс куда-то пропал, не знаю куда.

anonymous
()
Ответ на: комментарий от anonymous

Это ты протри глаза, пробегись по цепочке ответов и посмотри на какое сообщение (не тебе, кстати адресованное) ты ответил.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

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

anonymous
()
Ответ на: комментарий от anonymous

Внедрение Meson форсируют разработчики одной известной шапки.

Так что, мезон под шапкой? Они его разрабатывают? А симейк?

sena ★★
()
Ответ на: комментарий от sena

симейк никому себя не навязывает. я не помню чтобы x.org, gimp и mesa переходили бы на симейк потому что какой-то дядя из китвера так распорядился. из-за этого симейк разрабатывается с учётом интересов всего сообщества, а не какой-то его отдельной части.

anonymous
()

делая свой pet проект обратил внимание что пошла мода делать header only библиотеки например boost и прочие, что увеличивает скорость компиляции в разы просто выводя из себя … я подумываю с помощью тулзы разбивать h файл на h и cpp чтобы бы иметь предкомпилированную библиотеку и уменьшить скорость компиляции и сборки. второе пощупать target_precompile_headers() и UNITY_BUILD в cmake … подскажите я в правильном направлении иду в борьбе с header only библиотеками и скоростью компиляции?)

I_one
()
Ответ на: комментарий от anonymous

я не помню чтобы x.org, gimp и mesa

… mesa …

ЕМНИМ Mesa недавно с autotools на meson перешла (не все были согласны, но к счастью разум победил), cmake не при делах.

whereisthelinus
()
Ответ на: комментарий от sena

Интересно было бы также послушать истории типа «надо фичу Х но её нет в симейк, поэтому взял аутотулз» и наоборот

Мне как разработчику критично было что cmake генерирует не только мэйкфайлы, но и проекты IDE, и при желании ninja. И через это правильно поддерживает винду (и что угодно, без оглядки на posix). Это и есть честная кроссплатформенность. В перспективе также интересен CPack.

Ах да, киллер-фича: цветной прогресс-бар в консоли.

anonymous
()
Ответ на: комментарий от vertexua

Windows пытается косить под Linux эмуляцией экосистемы разработчика

Что за бред? Использовать git это уже косить под линупс? При том, что в винде первоклассная экосистема разработчика с начала времён. Пеши ищо короч.

anonymous
()

опция --loglevel теперь устарела и будет переименована в --log-level.

Что значит «будет»? Т.е. уже переименована в этом релизе?

Einstok_Fair ★★☆
()
Ответ на: комментарий от grem

На meson переходят проекты так или иначе связанные с шапкой, а именно: gtk, gnome, wayland и компания. Gimp не исключение. Postgresql, Blender, MySql даже не рассматривают подобный переход.

anonymous
()
Ответ на: комментарий от anonymous

Скорее всего gimp не исключение, так как хостится на гитлаб сервере gnome, а всякий travis ci там настроен в основном на использование в связке с meson. Ну и действительно может быть общая рекомендация их проектов.

grem ★★★★★
()
Ответ на: комментарий от RazrFalcon

Ибо лучше смерть, чем cmake.

Погоди умирать. cmake – классная штука, она позволяет легко определить, кого уже пора закапывать.

Реальность такова, что ежели проекту не хватает обычного make (и, сто чертей им в харддиск, без всяких autotools, от которых никакой пользы, кроме вреда), то этот проект либо рефакторить немедленно, либо закапывать. А если проекту в целом хватило бы обычного make, но его таки перетащили на cmake – то закапывать надо уже авторов проекта.

Ну, что создателей cmake и прочих «систем сборки» надо было закопать ещё до того, как они всё это сваяли – это понятно, но уже поздно.

Croco ★★★
()
Ответ на: комментарий от Croco

то этот проект либо рефакторить немедленно, либо закапывать.

Нда, яркий пример классической лор-аналитеги.

Для проекта сложнее helloworld.c makefile выглядит на порядки более наркоманским чем CMakeLists.txt

Впрочем авторам heloworld.c это не понять.

WatchCat ★★★★★
()

Ну наконец-то loglevel переименовали, сколько можно уже было издеваться над простыми пользователями. Годнота!

anonymous
()
Ответ на: комментарий от xDShot

И чтобы не переконпеляло когда не требуется.

make не умеет (и никогда не умел) запускать пересборку при изменении командной строки таргета. Благодаря чему близко 100% проектов на чистых мейкфайлах имеют сломанную инкрементальную сборку.

Dendy ★★★★★
()
Ответ на: комментарий от WatchCat

Что там конкретно наркоманского кроме странноватой if() else() endif()?

Он весь наркоманский. Особенная мякотка – вызов функций.

Нормально: function( i, j, k )
Говно из CMake’а: function( i j k )

Как закончить выражение с таким синтаксисом? Говнокодеры из KitWare для этого случая предлагают ещё один угрёбищный костыль с парсером аргументов вида function( ARG1 i ARG2 j ARG3 k ).

EXL ★★★★★
()
Ответ на: комментарий от I_one

я в правильном направлении иду в борьбе с header only библиотеками и скоростью компиляции?

Никуда не денешься ты, это С++, скорость компиляции чего-то серьезного - десятки минут на нормальной машине.

Если цель снизить время компиляции, то правильное направление - другой язык.

Что касается C++, то - Pimpl и немного https://include-what-you-use.org

zendrz ★★
()
Ответ на: комментарий от EXL

Там вообще всю скриптовую часть надо бы убрать. Оставить тупой транспилер декларативных рулесов (add_???, target_???) из одного DSL в другой. Ничего вменяемого на скриптовой части я за всё время не видел ни в опенсорсе, ни в энтерпрайзе, одни вечно фейлящие костыли и велосипеды. (UPD: отчасти правда это вызвано тем объективным фактом, что по CMake действительно очень долгое время вообще не было нормальных руководств, до тех пор пока Craig Scott не написал свою книгу.)

d_a ★★★★★
()
Последнее исправление: d_a (всего исправлений: 1)
Ответ на: комментарий от EXL

Ты без запятых разделяющих параметры жить не можешь?
Я наоборот не вижу смысла в них.

Про второе вообще не понял.
Ты про обработку аргументов в макросах?

WatchCat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.