LINUX.ORG.RU
ФорумTalks

А в чём профит CMake перед make в главном?

 


1

1

Чё-то несколько лет уже пишу CMakeLists.txt и не думаю как всё под капотом работает. Недавно понадобилось в Makefile поковыряться - «клёвая система», подумал я. Не забить ли на лишнюю прослойку в виде cmake? Что мешает забить на cmake в 2018 году и писать только Makefile? Геморность чего именно возрастёт?

Топ ответов:

1. Кросс-платформенность: cmake генерит MS - сборочные файлы (проджект для Visual Studio, видимо).

2. минус Makefile - для больших проектов это ЖОПА. Но у больших проектов она покругу и можно не обращать внимания :-) (афтар не указал, в чём именно эта Makefile-жопа у больших проектов, афтар выше него сказал что всё делается через некие переменные красиво)



Последнее исправление: hlamotron (всего исправлений: 2)
Ответ на: комментарий от missxu

cmake умеют генерить почти все IDE. Единственное иногда его надо править ручками, если правила сборки своеобразные и отличаются от дефолтных.

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

ктото еще пользуется IDE для написания кода в 2018

чет не верю

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

Ктсати, не тако уж сложно склепать Find-модуль с этими imported targets. Если библиотека предоставляет pkg-config модули, то ещё проще (мейнтейнеры пакетов в линуксах обычно следят за pkg-config-модулями и обычно они нормально работают).

https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/#if-you-...

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

Если библиотека предоставляет pkg-config модули, то ещё проще (мейнтейнеры пакетов в линуксах обычно следят за pkg-config-модулями и обычно они нормально работают).

Смысл тянуть pkg-config в CMake-скрипты имеется только тогда, когда проект не является кросс-платформенным. Иначе какой толк в CMake?

EXL ★★★★★
()

Кроме того, раз разработчики CMake отказались делать и сопровождать FindModules самостоятельно, почему в интернете нет централизованного репозитория, в который сообщество помещало бы готовые и отлаженные FindModules для разных библиотек?

Или может есть, да я не нашёл?

Почему я как виндузятник или как o-, должен лазить по помойкам с огромным мешком, выискивать эти модули разной степени упоротости, тестировать их или же писать собственные велосипеды?

1. https://github.com/chakraos/core/blob/master/sdl2_mixer/FindSDL2_mixer.cmake
2. https://github.com/ksterker/adonthell/blob/master/config/FindSDL2_mixer.cmake
3. https://github.com/linkdd/sdl-game-engine/blob/master/cmake/FindSDL2_mixer.cmake
4. https://github.com/neoaggelos/tap/blob/master/cmake/FindSDL2_mixer.cmake
5. https://github.com/metatrevor/mchezo-engine/blob/master/cmake/FindSDL2_mixer....

Какой из них правильный и корректный? Кто мне ответит? За подобную хрень мудакам из Kitware нужно отрезать пальцы. Медленно и по одному в день. CMake — говно.

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

Собственно, найти какие-то вменяемые cmake best practices в гугле пару лет назад было сложнее, чем наговнякать бяку на коленке, как все и поступали.

На самом деле это тоже часть фейла их сайта. Гугол обычно выдает пачки ссылок на документацию версии 3.0 и хотя для выбора документации по свежей версии достаточно лишь сверху ее выбрать сотни макак это не осиливают. В итоге юзают всякое legacy даже по меркам самого CMake.

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

но ничего лучше CMake пока не появилось.

Оно, конечно, появилось. Даже куча всего появилось интересного и адекватного, например, легковесный Premake на Lua:

https://github.com/premake/premake-core/wiki/What-Is-Premake

Или QBS:

http://doc.qt.io/qbs/language-introduction.html

Вот только как это бывает, победило самое угрёбищное и наркоманское решение (CMake), отчасти потому, что родилось раньше и крупные компании вроде Google сделали ставку на него. И теперь оно тупо жмёт всех адекватных своей популярностью.

И конечно же редхат будет поддерживать все платформы которые поддерживает CMake (нет)...

Premake и QBS, например, поддерживают основные платформы. Meson появился недавно, но если RedHat его промнёт и протолкнёт, то и он будет поддерживать.

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

pkg-config модули некоторыми проектами предоставляются и для виндовых mingw сборок, емнип

UPD: ну то есть, бывает что собираешь какой-то проект под виндой c помощью CMake, делаешь cmake install и в итоге в директории куда установил может появиться файл потипу lib/pkgconfig/FooBar.pc, из которого потом можно вытащить например флаги компилятора и можт ещё пару-тройку нужных вещей (которые сложнее детектить самому из-под Find-модуля)

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

... CMake — говно.

Если рассматривать под таким углом, то таки очень соглашусь

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