LINUX.ORG.RU

Почему все так не любят GNU Autotools?

 , , ,


0

1

Недавняя новость удивляет: CMake 3.28

В комментариях многие желают GNU Autotools смерти, но почему? Я свои проекты сопровождаю с ним и почему-то никаких проблем не возникает.

Последняя версия Automake обновлена: 2018-02-25
Последняя версия Autoconf обновлена: 2021-01-28

Разве это не круто? С Cmake часто возникает ситуация, когда у вас CMake версии (условно) 3.0.0.1, а проект хочет CMake 3.0.0.3 и требует его обновить. Ладно в Gentoo можно новую версию собрать, а что делать с APT дистрами? Удалять, собирать руками новую версию? А ему либы нужны тех версий, которых нет в репозиториях. Дальше что? Их тоже руками собрать?

Autotools во-первых обновляется нечасто (фактически, только bugfixы), во-вторых может переживать дремучее легаси (да, с варнингами, но пережует), а не поступит как CMake:

удалена команда exec_program(), признанная устаревшей в CMake 3.0. Вместо неё следует использовать execute_process();

Так объясните мне теперь, за что вы так Autotools не любите? Он же замечательно работает.

Перемещено hobbit из general

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

А -std=gnu89, -std=gnu99, -std=gnu11, -std=gnu17 это что?

Это выбор диалекта языка, который может конфликтовать со стандартом.

By default, GCC provides some extensions to the C language that, on rare occasions conflict with the C standard. See Extensions to the C Language Family. Some features that are part of the C99 standard are accepted as extensions in C90 mode, and some features that are part of the C11 standard are accepted as extensions in C90 and C99 modes. Use of the -std options listed above disables these extensions where they conflict with the C standard version selected. You may also select an extended version of the C language explicitly with -std=gnu90 (for C90 with GNU extensions), -std=gnu99 (for C99 with GNU extensions) or -std=gnu11 (for C11 with GNU extensions).

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

Диалект и стандарт в данном случае синонимы. Некоторые скажут что стандарт это то, у чего есть бумажка с печатью, но это совершенно неважная деталь.

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

Компилятор рабочий, соблюдает стандарт в этом случае.

Какой пункт стандарта ANSI C запрещает неявное определение функции? Здесь, наоборот, программа, соответствующая стандарту, внезапно не компилируется.

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

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

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

Уж очень его все ругают

У меня к нему была конкретная претензия — отсутствие вменяемой диагностики ошибок файла проекта (по крайней мере, в тех ситуациях, на которые я попадал). Если сумеешь не только попробовать, но и заслать авторам патч (он на Java написан), он будет очень даже неплохой. :)

Более «системная» проблема — зачем в сборочную систему проектов на C/C++ тащить целую Java. Из той же серии вопрос про mezon, написанный на питоне, но там хотя бы muon есть…

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

Так тогда в чём проблема? Декларируют, что всё, что написано с использованием стандарта C89, не поддерживается, и выкидывают: zip, jq, screen, …

Точнее, используют для старого стандарта компилятор, поддерживающий этот стандарт.

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

С чего это не будет? Я патчил configure 2-мегабайтный например (чтобы старую версию пхп собрать под новую систему), это проще чем разбираться как его автотулзами перегенерировать.

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

я вообще не понимаю как оно работает

технологии из прошлого столетия вроде M4 и Perl про которые

Я так понимаю, читать документацию — тоже недостаточно модно и молодежно?

buddhist ★★★★★
()

Так объясните мне теперь, за что вы так Autotools не любите? Он же замечательно работает.

Я не думаю что постановка вопроса правильная. Давайте переспрошу - что конкретно Вам дал(ёт) autotools?

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

Если инструмент требует прочитать пару толстых книг чтобы написать hello world при наличии аналогов где это делается интуитивно понятно, то такой инструмент не нужен.

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

Шутка

Это «да».
Ещё имеются ОС, для обеспечения работы которых, обязательно дома нужно иметь «бубен».

Хороший пример - «Описание стандарта C++ занимает более 1300 страниц текста.».

Вброшу.

Для хорошего ЯП достаточно руководства, содержащего пол страницы печатного текста.

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

Это только синтаксис собственно языка. И то, если речь идёт про Smalltalk, но он не затрагивает такие аспекты как определение классов и методов, т.к. это обеспечивается средой.

В стандарт С++ входит ещё и стандартная библиотека, она тоже часть языка. Это не отменять сложности С++. А так там уже 1800 страниц - https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/n4849.pdf

Begemoth ★★★★★
()

я тоже не понимаю такого хейта ...
а сам я просто обожаю эту тулзятину, самый удобный, безглючный, надежный как каламшникоффф... минструмент!!! :о)

sunjob ★★★★★
()

Оно немножко контринтуитивно (всякие оцпии компиляции надо задавать на стадии ./configure а не make) и очень невнятно сообщает об ошибках.

Команда не найдена - а где ее искать? Приходится гуглить.

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

Это все ернуда конечно и решается, но немного бесит. CMake, если что, я тоже не люблю;-)

AntonI ★★★★★
()

Я не люблю эту систему сборки за то, что она не умеет собирать одновременно релизную и дебужную версию. Там только одна цепочка сборки.

Shushundr ★★★★
()