[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] vpath und make



Am Freitag, den 21.04.2006, 14:31 +0200 schrieb Gerhard Wolfstieg:
>  Daniel Leidert  am Fri, 21 Apr 2006 14:00:13 +0200:
> > Bei mir hat es (AFAIK) mit jeder Version funktioniert. Was genau
> > klappt denn nicht? Kannst du den Makefile-Ausschnitt posten?
> 
>      Hallo Daniel,
> 
> am Anfang der Makefile steht u.A.
> 	vpath %.h  /orange/D/cc/auch
> weiter unten hätte ich gerne statt
> 	pMath.o : $(SRCPATH)pMath.c
> 		cc -c $(CFLAGS) $< -I /orange/D/cc/auch -o $@
> gerne
> 	pMath.o : $(SRCPATH)pMath.c
> 		cc -c $(CFLAGS) $< -o $@
> und Ähnliches, um meine Bibliotheken jetzt parallel in Windows und Linux
> zu haben und trotzdem nur aus einer Codequelle zu schöpfen.

Ich glaube, da ist das Problem. Das würde nur funktionieren, wenn du den
oder die Header mit in den Zielvoraussetzungen angibst. Zusätzlich
könnte man $(SRCPATH) auch noch rauswerfen. Ist mittels vpath oder VPATH
auch handhabbar. Also IMHO müsste dein Konstrukt so aussehen:

vpath %.h /orange/D/cc/auch

pMath.o : pMath.c pMath.h ...weitere lokale Header...
	cc -c $(CFLAGS) $< -o $@

Dann würde nämlich pMath.h auch in /orange/D/cc/auch gesucht werden
(pMath.h ist hier natürlich nur ein Beispiel).

Als weitere Gedankenspielerei für dein Ziel:

VPATH += $(SRCPATH):$(HEADERPATH)

pMath.o : pMath.c pMath.h ...weitere lokale Header...
	cc -c $(CFLAGS) $< -o $@

Also du erweiterst in diesem Fall die VPATH-Variable um die Pfade zu den
Quell- und den Header-Dateien und dann erstellst du eine implizite
Regel, die allerdings die Quell- und Header-Dateien einschließen müsste
(diese werden dann innerhalb von VPATH gesucht). Alternativ ginge
stattdessen:

pMath.o : pMath.c
	cc -c $(CFLAGS) $< -I $(VPATH) -o $@

Und VPATH ließe sich ja fallbedingt erweitern - also für Linux und
Windows unterschiedlich handhaben.

HTH und MfG Daniel



Reply to: