2016-06-24 15 views
0

Sagen wir, ich habe ein Verzeichnis mit c-Dateien (.) und ich möchte, dass die Objektdateien in zwei verschiedenen Verzeichnissen landen: debuggen und release. Jetzt möchte ich die Regel dafür machen. Dies wird am Ende so etwas wie folgt sein:Einzelne make-Regel für mehrere Ausgabedateien in verschiedenen Verzeichnissen

$(DEBUGDIR)%.o : %.c 
    $(CC) $(CFLAGS) -c $< -o [email protected] 

$(RELEASEDIR)%.o : %.c 
    $(CC) $(CFLAGS) -c $< -o [email protected] 

Dies sind zwei Regeln, die genau gleich sind. Da alle möglichen Unterschiede zwischen diesen Regeln in CFLAGS enthalten sind, gibt es keinen Grund, sogar zwei Regeln zu haben: Ich möchte nur eine beibehalten. Ich versuchte dies:

$(DEBUGDIR)%.o $(RELEASEDIR)%.o : %.c 
    $(CC) $(CFLAGS) -c $< -o [email protected] 

Aber jetzt wird es nicht die o-Dateien für RELEASE kompilieren, wenn es bereits für DEBUG zusammengestellt. Wie kann ich diese beiden Regeln zusammenfassen?

Antwort