DEO>> и проблема автогена депендсов везде решена?
> Это наиболее тяжкая часть, но по сравнению с make оно гораздо лучше во > всех. Подробности я не смотрел, и подозреваю, что полностью корректного > решения нет ни в одном. Но во всяком случае грабли, по которым ходит > make, там убраны. Не из упрямства, а справедливости ради, не ГРАБЛИ, а маленькие грабельки ;-) Эти грабельки совсем не мешают жить, нужно всего лишь уметь готовить make ;-) Позволю себе представить собственно "классический" вариант решения проблемы, в очередной раз становясь на защиту классического make-а и, в особенности, одной его реализации ;-) Для удобства чтения разделил секции строкой =========================. =========================================================================== 0 dictd_bsd_make>bmake dict ... <построили в общем> =========================================================================== 0 dictd_bsd_make>touch dict/dict.h =========================================================================== 0 dictd_bsd_make>bmake dict TRG='depend all' SUBDIR="libmaa dict_common dict" /usr/pkg/bin/bmake depend all depend ===> libmaa depend ===> dict_common depend ===> dict all ===> libmaa all ===> dict_common all ===> dict gcc -O2 -Werror -c dict.c gcc -L../dict_common -L../libmaa -o dict dict.o -ldict_common -lmaa =========================================================================== 0 dictd_bsd_make>bmake dict TRG='depend all' SUBDIR="libmaa dict_common dict" /usr/pkg/bin/bmake depend all depend ===> libmaa depend ===> dict_common depend ===> dict all ===> libmaa all ===> dict_common all ===> dict =========================================================================== 0 dictd_bsd_make>cat Makefile .if !defined(SUBDIR) SUBDIR+= libmaa SUBDIR+= dict_common SUBDIR+= .WAIT SUBDIR+= dict SUBDIR+= dictd SUBDIR+= dictfmt SUBDIR+= dictzip .endif TRG?= all .PHONY: dict dictd dictfmt dictzip dict dictd dictfmt dictzip: SUBDIR="libmaa dict_common $@" $(MAKE) $(TRG) .include <bsd.subdir.mk> =========================================================================== 0 dictd_bsd_make>cat dict/dict.c #include "dict.h" int main () { return 0; } =========================================================================== 0 dictd_bsd_make>cat dict/Makefile PROG= dict .include "../dict_common/Makefile.inc" .include "../libmaa/Makefile.inc" .include <bsd.prog.mk> =========================================================================== ОРстальные файлы каркасного проекта я уже показывал рядом. Для тех, кто дочитал до этого места. Дальше думаю понятно, что делать. Пилите ваше IDE, то есть ваш Linux/UNIX до состояния, в котором она IDE пригодна к использованию. Например man bash/zsh/ksh/tcsh/mksh на предмет алиасов, функций и программируемых автодополнений. Ктоме того, в BSD make по умолчанию до основного make-а всегда включается (include-ится) mk.conf. В нем можно писать всяческие приватные goodies, с помощью которых жизнь станет намного легче. У меня там, к примеру, прописан такой таргет. .PHONY : list-vars list-vars : .for v in ${VARS} @printf "%s=%s\n" "${v}" "${${v}}" .endfor Работает так 0 pdnsd>bmake list-vars VARS='PKGNAME MAINTAINER' PKGNAME=pdnsd-1.2.7 [EMAIL PROTECTED] 0 pdnsd> mk.conf - это собственно продолжение идеи о том, что ОС UNIX - это и есть ваша IDE. BSD make эту идею продолжает и развивает. mk.conf - ваши "умолчания" и спец функции по аналогии с .myshrc. _Сильно_ облегчает жизнь именно на этапе разработки. Туда можно прописать очень сложные вещи, в том числе настройки для различных проектов. Собственно того же самого можно добиться и с GNU make, прописывая _явно_ в каждый Makefile проекта что-нибудь вроде sinclude /etc/gnu_mk.conf -- Best regards, Aleksey Cheusov. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]