2009-08-07 6 views
2

Ich muss ein schnelles Makefile für den Bau all meiner Projekte schreiben. Das ist C++ Code und ich benutze gmake.rekursive gmake Frage

Sagen wir, ich habe eine Liste von Verzeichnissen, ich möchte zu jedem cd, gmake Befehl ausgeben und wenn es erfolgreich ist, gehe zum nächsten und so weiter.

Ich kochte dies am gmake manual

.PHONY: all clean dirs $(DIRS) 

dirs: $(DIRS) 

$(DIRS): \n\t 
    $(MAKE) -C [email protected] 

suchen Sie für die „alle“ Ziel funktioniert - wenn ich tippe gmake nur, es das Richtige tut. Aber wenn ich sauber mache, tut es nichts.

Ich lerne gmake, wie ich gehe, so bin ich sicher, etwas zu tun dumm hier :)

Vielen Dank für jede Hilfe.

Antwort

8

Um rekursiv etwas anderes als das erste Ziel zu machen (ich schätze, alles ist dein erstes Ziel), musst du dem Unter-Maker eine Idee geben, was er bauen soll. Sie können dies mit den Variablen MAKEFLAGS und MAKECMDGOALS tun.

Zum Beispiel:

$(DIRS): 
     $(MAKE) -C "[email protected]" $(MAKEFLAGS) $(MAKECMDGOALS) 

Ihre Regel nicht an den Zielnamen vorging, z.B. sauber, also hatte die Sub-Marke keine Arbeit zu tun (da alles bereits gebaut wurde).

+0

Ja tatsächlich, das hat es behoben. Vielen Dank. –