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
signature.asc
Description: Digital signature