LINUX.ORG.RU

Есть ли аналог cmake с менее инопленетным синтаксисом?

 , , , ,


0

6

cmake имеет много полезных бэкендов, но весьма не удобен в конфигурации. Указывать все эти CMAKE_COMPILER_FLAGS, CMAKE_LINKER_FLAGS, CMAKE_YOUR_MOM_FLAGS довольно не удобно, да и вообще синтаксис самих файлов ни на что не похож
Есть ли альтернативы с более человеческим именованием переменных?
meson не предлагать, там даже wildcard нету.
Для меня пока чистый gmake кажется самым оптимальным решением, хоть и приходится писать отдельные мейкфайлы под все платформы. Зато они получаются все маленькие и простые

★★★★★

Нормально, всё нормально с cmake. Что не нормально так это то что за год они могут полностью поломать совместимость и назначение/смысл переменных и методов, пару раз.

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

за год они могут полностью поломать совместимость и назначение/смысл переменных и методов, пару раз.

Ну, года с 2015, все более-менее устаканилось. Были учтены концептуальные ошибки, вместо стабилизации говна мамонта решили что будут двигаться вперед. Неплохо.

cmake намного лучше того, что думают о нем те, кто столкнулся с ним в начале 2010-х

Deleted ()

Указывать все эти

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

Главное, изучай недревние статьи, после 2016 вполне подойдут.

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

Вкусовщина. Когда ты пишешь кроссплатформенное приложение, альтернатив у тебя не много и cmake прекрасно справляется со всем. Его скрипты позволяют очень широкий контроль над логикой сборочной системы, и даже не знаю есть ли альтернативы.

anonymous ()

Уж где инопланетный синтаксис, ни на что не похожий, - это у make, особенно gmake. У cmake - самый обычный скриптовый, разве что кому-то бейсик напоминает (хз чем) и ранит этим.

Для простого проекта приличный мейкфайл не умещается в страницу, у cmake - несколько строк.

К тому же, выбирать систему сборки по именам переменных... not_sure_if_trolling.jpg

anonymous ()

Из того, о чем наслышан: bazel, build2, buckaroo, scons, waf.

Сами мы уже лет 14 используем свой велосипед на Ruby, гораздо читабельнее, чем CMake, на наш вкус, естественно (здесь дока, но она давно не обновлялась в связи с отсутствие времени/ресурсов).

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

Проекты сишные/сиплюснутые? Тогда почему бы не qmake в самом деле - простейший синтаксис, кроссплатформенно. Ведь cmake выбирают ради мегафич (подключения сторонних либ и модулей, не знаю). А если надо простое - то qmake. Qt оно с собой вроде не тянет. В любом случае, приятно, что не я один считаю cmake омерзительным.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от mittorn

Например: https://packages.ubuntu.com/trusty/qt5-qmake

Тут нет зависимостей от Qt 4 или 5, по крайней мере не в обязательных. Так что более менее «точно». И оно самое вывалит Makefile под платформы по единому pro-файлу (для qmake). И можно опции под платформы задавать, если что-то есть в винде, а что-то лишь в линуксе.

В общем, удобно. Для проектов средней сложности.

Ну VS и MinGW само собой оно 100% поддерживает.

I-Love-Microsoft ★★★★★ ()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Указывать все эти CMAKE_COMPILER_FLAGS, CMAKE_LINKER_FLAGS, CMAKE_YOUR_MOM_FLAGS довольно не удобно

возможно, потому что эти опции не предназначены для указывания руками? Для этого есть target_link_libraries и т.д.

anonymous ()

От CMake сегодня многие отказываются и переходят на Meson, потому что понимают что CMake — та ещё параша. Неочевидная. Кривоработающая. Не соблюдающая свои же задекларированные возможности.

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

Бери выше, шапка и сам https://github.com/systemd/systemd/blob/master/meson.build

Ну и да, графический стек из X.Org, Wayland, (+Libinput) и Mesa сотрудники RedHat'а переводят на Meson:

https://github.com/mesa3d/mesa/blob/master/meson.build
https://github.com/mirror/xserver/blob/master/meson.build
https://github.com/wayland-project/libinput/blob/master/meson.build

Кроме того, Cinnamon недавно начал переходить, хотя, наверное они просто потянулись за GNOME: Cinnamon 3.8

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

Дык один легаси на нём. Вон выше пишут что иксы на meson переводят. Тут-то сразу половина и отвалится.

PS:

% equery d autoconf | wc -l
172
razr@razr ~ % equery d cmake | wc -l   
133
% equery d dev-qt/qtcore | wc -l (типа qmake + cmake)
157
% equery d autoconf | sed '/x11.*/d' | wc -l (без иксов)
106

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

а во-вторых, то, что пакет зависит от qtcore, совсем не значит, что он qmake-ом собирается

Я об этом написал, вообще-то. Ни одной проги на Qt, которая собиралась бы богомерзким autotools я не видел.

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

https://lwn.net/Articles/750152/

Статья 2018 года.

Work was done recently to replace the problematic CMake-based build system with GNU Autotools. This was done partly because of the limitations and complexity of CMake coupled with its less-ubiquitous status; Autotools is more widely known.

Я 5 раз перечитал это место, думая что там опечатка.

GPFault ()