PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Makefiles



quinte17
17-04-2008, 11:41
Hallo allerseits, ich habe ein Problem bei einem Makefile...
Ich muss die Abhängigkeiten Dynamisch verändert in Abhängigkeit ob eine bestimmte Datei existiert oder nicht. Schematisch sieht mein Makefile so aus:


all: test

test: test.o
gcc beispiel.c test.o -o test

test.o: test.c
gcc -c test.c

Nun ist es erforderlich, dass die Datei test.c gelöscht wird, aber test.o wurde vorher erstellt.
Theoretisch funktioniert der gcc befehl nachwievor, bis auf die tatsache, dass make die datei test.c nicht findet und abbricht, anstatt einfach test.o zu verwenden.

jetzt möchte ich am liebsten so was in der art haben:


DEP=$([ -e test.c ] && echo test.o)

all: test

test: $(DEP)
gcc beispiel.c test.o -o test

test.o: test.c
gcc -c test.c

was aber so nicht geht...
weiß einer wie man das lösen kann?

danke schonmal für jeden ansatz

greetz

jan61
17-04-2008, 21:11
Moin,

make kennt u. a. Funktionen, mit denen Du sowas machen könntest, aber versuchs mal ganz einfach (ungetestet):

test.o: test.c
test -f test.c && gcc -c test.cJan

EDIT: Funktioniert nicht, glaube ich - make bricht ja schon ab, weil die Dependency nicht existiert. Also doch make-Funktionen - z. B. so:
DEP := $(shell test -f test.c && echo test.c || echo test.o)

quinte17
18-04-2008, 07:55
echt genial :)
danke, funktioniert prima!

greetz