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

AC>> ладно хорошо другой пример:
AC>> есть у нас makefile из которого вызывается другой makefile, но
AC>> предположим не с программой make а с программой ?make

AC>> рекурсия есть или рекурсии нет?

AC> depends.
именно depends, о чем и говорю

и соответственно make на другой makefile точно такой же depends,
отличается от предыдущего depends одной буквой в названии

A> Если ?make - это скрипт, выполняющий rm -f $1, то нет.
а это почему это? может у него задача стоит rm -f $1? (типичный make
clean)

AC>>> Если это не отличие, то ты не в курсе, зачем нужен make.
AC>> он нужен чтобы собирать цели, а уже собранные игнорировать.

AC> Отнюдь не игнорировать.
именно игнорировать, поскольку они уже собраны

AC> Шелловский скрипт unconditional сборки проекта проще соответствующего
AC> мейкфайла.  Потому что надо описать только команды сборки, а на
AC> зависимости можно забить.
если ты на зависимости забьешь то у тебя не соберется

а и shell'овским скриптом тоже можно смотреть на даты файлов и
сравнивать их.
разницы тут ровно столько что в одном языке одно действие сделать проще
чем в другом

AC> Ясно.  Не понял.  Объяснить?
попробуй :)

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

AC> Скажем так, избежать этих грабель при рекурсивном вызове make гораздо
AC> труднее,
вызов внешнего make - нерекурсивный

и грабли начинаются только там где два процесса пытаются работать с
одним ресурсом, обычный IPC

это в любом языке эти грабли есть где есть возможность создания
процессов и воздействия их друг на друга.

если например 
makefile1 собирает либу1
makefile2 собирает либу2
makefile3 собирает либу1 и либу2 в пакет, вызывая makefile2 makefile1
то это нормально
а если
makefile1 собирает либу1
makefile2 собирает либу1 и либу2
makefile3 пытается вызвать makefile1 makefile2 то это просто у
программера в голове каша, ее надо исправлять. "рекурсивный" make тут не
при чем

AC> У make, впрочем, есть и еще одна проблема.  Она уже не имеет отношения к
AC> рекурсивному вызову, но ноги ее растут примерно из той же весьма куцей
AC> модели зависимостей, которую он реализует.  Ее тоже можно обойти, но это
AC> ВЕСЬМА нетривиально, и разумеется, НИКАК не поддерживается встроенными
AC> правилами (т.е. встроенными пользоваться при этом нельзя).  Называется
AC> она "разные аргументы командной строки".
все борьба с какими-то ветряными мельницами, то с шеллом то с мейком

повесили ярлык "рекурсивный" и сказали что плохо, теперь вот аргументы
комстроки не нравятся, лучше уж тогда вернуться к флейму про getopt ;)
ЛОЛ
--
... mpd is off

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: [EMAIL PROTECTED] jabber://[EMAIL PROTECTED]
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Attachment: signature.asc
Description: Digital signature

Ответить