Здравствуйте, pivcorp, Вы писали:
P>P>SUBDIRS= sub1 \
P><------> sub2 \
P>default:
P><------>for p in $(SUBDIRS); do (cd $$p; make $@; cd ..;); done
P>all:
P><------>for p in $(SUBDIRS); do (cd $$p; make all; cd ..;); done
P>
так все обычно и делают — рекурсивеый make называется. хуже чем goto
вот некоторые причины, почему это плохо:
— толком не отследить зависимости. например, если sub1 зависит от sub2, то уже имеем проблемы
— паралельный make (-j 2) не будет работать на более-менее сложном проекте. кстати, отличный стресс тест для билд-системы — запустить make с ключем -j 2 или больше.
— рекурсивный make работает гораздо медленнее. потому что каждый для каждого подкаталога надо стартовать процесс make, он должен прочитать ваши мейкфайлы. причем одни и те же файлы, в которых у вас общие настроки проекта, будут читаться много-много раз. тормоза в глаза бросаются особенно под cygwin-ом.
вообщем, если проект простой, то можно и так. но лучше сразу делать нормально. только это непросто, потому что make примитивнен.
ЗЫ дополнительные функции make-у —
http://gmsl.sourceforge.net/ . недавно узнал об этой штуке, толковая.