LINUX.ORG.RU
ФорумTalks

За что так не любят cmake?

 


0

3

Почему-то всякое упоминание cmake притягивает толпу разъярённых людей. Чем он так плох? Чем его предлагаете заменить?

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

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

А как же то, что кроссплатформенность это хорошо?

Не слушай его. :) GNU Make прекрасно работает в винде, например. А больше не-POSIX систем, на которых ведут разработку, и в природе не осталось.

Ну и GNU Make сам по себе очень мощный язык, несложные проекты можно собирать прямо в нём без обвязки сверху.

Deleted
()

Тем, что это набор legacy-костылей.

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

Альтернативы? Ну meson...

Когда будет хоть где-то сравнимая инструментальная поддержка того meson, можно будет попробовать. Чем тот meson принципиально отличается от cmake? Синтаксисом? Скоростью? Ха, расскажи это дядям из кровавого.

Autotools? Ну так себе альтернатива, или собери spidermonkey за 10 минут под виндой под вижал студийный рантайм, не читая мануалы моззиловские.

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

в маздае автотулзы работают так себе. плюс автотулзы в чистом виде, без всяких там sed'ов и прочих полезных никсовых утилит - это весьма уныло. впрочем, это проблемы маздая, а не автотулзов.

Автотулзов. Конфигурация на m4 — это феерично. Авторов нужно распять. А то и разшесть.

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

Не слушай его. :) GNU Make прекрасно работает в винде, например. А больше не-POSIX систем, на которых ведут разработку, и в природе не осталось.

Бугага. Особенно когда в него кто-то засунул вызов sed'а.

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

Очевидно, как студенты на гитхаб с обьектниками и файлами от ыде.

Я почти уверен, что он скажет «тег на гитхабе». Потому что не знает, что github'овые тарболы генерятся при скачивании, и github уже не один раз менял алгоритм генерации, в результате чего у тарболов ВНЕЗАПНО становятся разные SHA256 суммы, что доставляет мейнтейнерам.

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

Автотулзов. Конфигурация на m4 — это феерично. Авторов нужно распять. А то и разшесть.

Покажите, где сделано лучше. Ублюдочный cmake не предлагать.

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

Обожаю, когда дискуссия обрастает конструктивными аргументами.

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

Meson мне синтаксисом не понравился и я даже на него не смотрел. Плюс к тому же, я не знаю как он работает на винде. На выбор редхата мне всё равно, поэтому это не аргумент.

Autismtools туда же.

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

А нигде. Поэтому я обычно юзаю просто Make. А в остальных языках свои тулзы.

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

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

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

Нормально там встроенных средств для несложных задач.

А для сложных одним sed-ом не ограничишься, нужен полный фарш.

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

Да ничего! Я не знаю идеального варианта, потому что его нет. У всех есть свои проблемы, а у каждого свои вкусы. И я считаю CMake это худший вариант из тысяч возможных. Мне то ладно, я к этому говну привык, я о вашем душевном состоянии забочусь.

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

именно. поэтому автотулзы на маздае работают исключительно в каком-нибудь эмуляторе никсовой оболочки, а-ля mingw или cygwin, и то при нужном наборе предустановленных костылей. а в родной среде маздая это не работает. иногда доходит даже до того, что разные символы перевода строки в файлах конфигурации убивают работу утилит. а в маздае 99% тулзов ставят маздайные два символа.

впрочем, проблемы маздая меня давно уже не интересуют. так что хрен с ним.

а для сборки мелких проектов можно без всяких тулзов makefile накатать.

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

Ну дык я тоже не знаю работоспособных альтернатив на которых не страшно стартануть проект.

Хотя, были времена, когда и на cmake было страшно, но из альтернатив были только autotools, про которые те же windows люди вообще не слыхивали, да и в студию без патчей от мозилы никак было.

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

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

cmake хотя бы без libtool живёт

Ну да, там и своего уродства хватает.

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

Ты не поверишь:

$ find -type f -name '*.c' | wc -l
1417

Платформы - разные линуксы по разные архитектуры: arm/mips/x86

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

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

Ты неправильно рассуждаешь. Я к тому, что выбор билдсистемы — это вкус. И CMake я даже врагу не пожелаю, сколько я уже вырывал волос на голове от его багов и банально непродуманной архитектуры и языка.

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

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

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

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

многомиллионные бюджеты не должны идти на мейнстрим

Я про RR а не про USD говорил и имел ввиду, что даже мелкие проекты не стал бы стартовать на на чём то, кроме мейнстрима.

Про особо крупные проекты можно ещё поспорить, но таких компаний, кто может без риска такой фигнёй страдать, на рынке крайне не много.

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

Предлагаете тащить весь питон? По хорошему, расширения системы сборки должны быть на том же языке, как в rust. Но C++ и тут подвёл, с его убогим std. Про сишку вообще молчу. Вот и страдают люди.

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

Вот и зачем мне ещё один питон, когда у меня уже есть натренированный, домашний питон. %)

pon4ik, тем не менее они уже слили бюджет на qbs. Хотя, ладно, может быть ты и прав про бюджет. Уже слили на qbs, сливают на qmake, теперь хотят что-то не собственной разработки и стабильное.

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

А да, в чём ты меня пытаешься переубедить? Что CMake не такое зло? Да, он вынужденное популярное зло. Но это все ещё зло.

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

Кмк, порочного круга нет, тебе кажется - есть опенсорс и любители развлечений. Если будет что-то годное, и ощутимо более лучшее чем cmake - оно взлетит, как взлетел тот же подход ide отдельно, сервера функциональности отдельно(ycm - одни из первых, clangd(и прочий lsp), cmake-server). Просто должен быть качественный скачок, а не очередное «лучше синтаксис», «быстрее», «завезли ваш любимый язык» и т.п.

А да, в чём ты меня пытаешься переубедить?

Да ни в чём, просто беседу поддерживаю :)

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

Предлагаете тащить весь питон?

Почему нет? Есть языки гораздо более простые - lisp, ecma script, lua. Языков, особенно скриптовых - на любой вкус. И, что характерно, они все проектируются встраиваемыми.

Тем более, не знаю как там в rust'овых проектах(пока не всплывало на моём горизонте чего-то круче, чем договорились два хипстора в баре пить эту неделю апельсиновый смузи, вместо бананового и писать на расте, вместо крестов), но в средних и крупных проектах по системным разработкам обычно нужно не только конпелять основной язык и линковать.

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

Систему сборки с синтаксисом lua было бы неплохо.

А вот питон тащить - это долбануться. Не везде протащится.

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

Для сравнения

Как их сравнивать, если там код абсолютно разный по сути?

Даже проверка поддержки опций компиляции - в одном случае завернута в обертку:

  add_c_compiler_flag_if_supported(OUR_FLAGS_OWN -Wextra)
  add_c_compiler_flag_if_supported(OUR_FLAGS_OWN -Wno-unused-parameter)
  add_c_compiler_flag_if_supported(OUR_FLAGS_OWN -Wno-missing-field-initializers)
  add_c_compiler_flag_if_supported(OUR_FLAGS_OWN -Wformat=2) # Warn about format strings.
  add_c_compiler_flag_if_supported(OUR_FLAGS_DEP -Wno-implicit-function-declaration)

В другом стреляют более низкоуровневым кодом:

  config:Add(OptTestCompileC("stackprotector", "int main(){return 0;}", "-fstack-protector -fstack-protector-all"))

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

Это так то - вся система сборки под три платформы, если я ничего не путаю :)

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

Не, ну ты как то сравниваешь автотулзы, мейк и шмейк, думаю и тут справишься.

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

Прикольно, надо будет глянуть. Спасибо!

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