[linux-l] Re: Makefile

JSC JSC at jsc.tfh-berlin.de
Sa Nov 30 23:20:04 CET 2002


On Fri, Nov 29, 2002 at 08:09:57PM +0100, Steffen Dettmer wrote:
> * JSC wrote on Thu, Nov 28, 2002 at 22:33 +0100:
> > Bild_laden.c: Bild_laden.h
> > Bild_laden.o: Bild_laden.c
> > 	$(CC) $(CFLAGS) -c $^
> 
> Das funktioniert so nicht, jedenfalls mit meinem Test-make. Im
> Debug mode sah man, daß make erkennt, daß .h neuer ist, daß zu .c
> keine Buildregel existiert und .c damit nicht neugemacht werden
> kann/muß. "all is up-to-date."...
> 
> Bild_laden.o: Bild_laden.c Bild_laden.h
> 
> (ohne Buildregel) hat jedoch korrekt funktioniert.
> 
hast recht. ich habe gerade nochmal genauer nachgelesen. scheinbar
war das Makefile, das ich mir da gegriffen hatte, selbst nur ein Versuch.
eine loesung die definitiv mal funktioniert hatte, hat sich die
abhaengigkeiten selbst berechnet (scheinbar war mir das auch zu umstaendlich):

-------------------------------------------------------------------
[..]
ifeq (.dep,$(wildcard .dep))
include .dep
else
all: depend
endif

all: $(ALL)

depend:
        @echo > .dep
        @find . -type f \( -name "*.c" -o -name "*.cc" \) -print | \
           sed -e 's/^\.\///' | \
           while read source; do \
              echo "Computing dependencies for: $$source"; \
              $(CXX) $(CXXFLAGS) -M $$source >> .dep ; \
           done

[..]
-------------------------------------------------------------------

wenn kein .dep file existiert, wird eins generiert. danach muss man
make nochmal aufrufen, diesmal ist .dep da, wird includiert und weiter
geht's.

wie ich in der anderen mail gelesen habe, ist mein find konstrukt obsolete,
weil es auch dafuer schon was vorgefertigtes gibt: makedepend

ist trotzdem schoen, wenn man die prinzipien dahinter kennt ...

gruss
Jens



Mehr Informationen über die Mailingliste linux-l