mehrfachparsendes make

10/06/2009 - 22:41 von Thomas Steinbach | Report spam
Hallo,

ist make eigentlich mehrfach parsend? Also wuerde das hier funktionieren?

all: dep $(BIN)

dep: $(SRC)
$(CC) -MM $(SRC) > $(DEP) $(CINCS)
-include $(DEP)

oder ist es zwingend das make zweimal aufzurufen?
Oder kann make quasi bis " $(CC) -MM $(SRC) > $(DEP) $(CINCS)"
lesen und ausfuehren und dann die erzeugte Datei auch gleich einlesen
und eben beruecksichtigen?

siehe: http://www.ijon.de/comp/tutorials/m...e.html#dep

btw: weiss jemand ob das "include" auch andere make utils koennen?

Thomas
 

Lesen sie die antworten

#1 Jan Seiffert
11/06/2009 - 02:24 | Warnen spam
Thomas Steinbach wrote:
Hallo,

ist make eigentlich mehrfach parsend?



Ohhh, du betrittst eine Welt des Schmerzes...

Also wuerde das hier funktionieren?

all: dep $(BIN)




Das ist etwas unguenstig...

dep: $(SRC)
$(CC) -MM $(SRC) > $(DEP) $(CINCS)
-include $(DEP)




Unter GNU Make: nein.

Ein Make liest schon alle Dateien und includes "bis zum schluss", damit es den
DAG aufbauen kann und damit auch eine "oben" benutzte Variable mit dem letzten
Wert "von unten" ersetzt werden kann (darum kennt GNU make ja ':=' fuer "jetzt
hier sofort zuweisen und benutzen").

Aber ob nach einer Aenderung einer der Makefiles _waehrend_ des make alles neu
geparst wird, das ist glaube ich nicht bestimmt.

oder ist es zwingend das make zweimal aufzurufen?
Oder kann make quasi bis " $(CC) -MM $(SRC) > $(DEP) $(CINCS)"
lesen und ausfuehren und dann die erzeugte Datei auch gleich einlesen
und eben beruecksichtigen?




Du kannst die deps erzeugen und dann make sich selbst noch mal aufrufen lassen.
Wenn du in das erste make zurueck kommst, sollte nichts mehr zu tun sein.

.SUFFIXES: .deb
.deb.c:
$(CC) -MM $< > $@

all: $(BIN)

$(BIN): $(OBJS)
$(CC) ...

$(OBJS): Makefile dep config.h

dep: $(DEPS)
$(MAKE) $(MAKECMDGOALS)

.include $(DEPS)

Nur MAKECMDGOALS ist dann auch wieder nur begrenzt portabel, unter anderen Makes
erweitert das dann zu "" was dann auf make ohne target hinauslaeuft.


siehe: http://www.ijon.de/comp/tutorials/m...e.html#dep




So toll das alles klingt, ich hab sowas aehnliches selbst ausprobiert...
... seitdem schreibe ich meine deps von Hand.

btw: weiss jemand ob das "include" auch andere make utils koennen?




Die meisten, es ist aber nicht in Posix

<http://www.opengroup.org/onlinepubs..._84_18>

Und natuerlich der Rest der Seite

Thomas



Gruss
Jan

Woo Hoo Woo Hoo Hoo

Ähnliche fragen