Bronko Pavel schrieb:
> Wie kann ich mittels sed noch "$(TEMPDIR)/" voranstellen?
>
> Ist:
> main.o: main.h src1.h
>
> Soll:
> TEMP/main.o: main.h src1.h
Du könntest das Verzeichnis schon in einer Liste der zu erzeugenden
Objekte anfügen und pattern rules schreiben:
1 | OBJECTS := main.o...
|
2 |
|
3 | OBJECTS := $(addprefix $(TEMPDIR)/, $(OBJECTS))
|
4 |
|
5 | %.o : %.c src1.h
|
Allerdings musste ich irgendwann einsehen, dass es am einfachsten ist,
das Makefile aus dem Objektverzeichnis aufzurufen. Etwas umständlicher
(und möglicherweise eleganter) ist es, das Makefile so zu gestalten,
dass es selbst "erkennt", in welchem Verzeichnis make gestartet wurde
und dann ggf. in das richtige Verzeichnis wechselt und sich von dort
nochmal selbst aufruft.
Je nach Tool kann man auch ein Ausgabeverzeichnis (z.B. TEMPDIR)
angeben, das fällt aber ab einer gewissen Komplexität dann auch
auseinander, da make die Dependencies nur ein einziges Mal analysiert
und nicht erneut nach jedem erzeugtem target.
Gruß
Marcus