[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Чем плох рекурсивный make?



Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Wed, 1 Oct 2008 12:24:24 +0400:

 AC>> make, напомню, в отличие от gcc, вызывают не только чтобы собрать цель,
 AC>> но и чтобы _пере_собрать ее.
 DEO> gcc вызывают не только для того чтобы собрать .o, но и пересобрать .o

 DEO> нет отличий

gcc вызывают для того, чтобы сделать новый .o _вместо_ старого.  Он про
старый вообще не думает, он его молча затирает.  make - думает.  Если
это не отличие, то ты не в курсе, зачем нужен make.

 AC>> С минимальными затратами.  Он именно для
 AC>> этого придуман, иначе он был бы нафиг не нужен, шелловский скрипт,
 AC>> начинающийся с set -e, того же результата достигает куда проще и с куда
 AC>> меньшими возможностями ошибок.
 DEO> каждая тулза для чего-то задумана
 DEO> шелл - для простоты склейки работы разных утилит
 DEO> make - для простоты сборки

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

 AC>> Он, конечно, _заодно_ позволяет и собрать цель, но это, прямо
 AC>> скажем, не основное его назначение, а именно что побочный эффект.
 AC>> Так вот, рекурсивный вызов make ломает его основную
 AC>> функциональность.  Побочную, правда, сохраняет.
 DEO> вызов внешнего make - нерекурсивный
 DEO> и ничего не ломает

Ты не подумал о том, о чем я тебя просил подумать?  Или подумал, но не
понял?

 AC>> Кстати, грабель подобного типа в дебиановских пакетах мне попадалось.
 AC>> Я, правда, заранее знаю, что они там есть...  Но, в частности, мне
 AC>> попадался пакет, который не собирался с первой попытки, а собирался
 AC>> только со второй...  Причем стараниями мейнтейнера, а не автора
 AC>> апстрима...
 DEO> а сколько пакетов собираются с первой попытки но не собираются со
 DEO> второй...

Это как раз существенно более типичная иллюстрация к recursive make
considered harmful.  Но в натуре, как правило вот ровно к этому.

-- 
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru


Reply to: