2016-03-22 10 views
0

Ich arbeite an einer großen Firmware und ich muss GNU gprof nur zu einigen Modulen (Dateiverzeichnisse) davon hinzufügen. Die Makefiles haben eine vererbte Struktur. So mache ich es so:CFLAGS Variation für Module in Makefile

ft/*.o : ft/*.c 
     CFLAGS += -pg 
ft/*.o : ft/*.c 
     LDFLAGS += -pg 

Aber das gibt mir eine Warnung, dass es den CFLAGS- überschrieben wird und dann fügt er die gprof all Modulen. Meine Vermutung ist, dass CFLAG irgendwo üblich ist. Wie kann ich sicherstellen, dass CFLAG nur auf dem Modul (Verzeichnis) funktioniert, auf dem ich möchte?

Antwort

2

Sie können es mit target-specific variables tun.

Die korrekte Syntax ist:

ft/*.o : CFLAGS += -pg 
ft/*.o : LDFLAGS += -pg 

Dies sind die Zeilen, die Sie hinzufügen möchten.

Alternativ können Sie diese Flags zu ausführbaren Dateien, gemeinsamen und statischen Bibliotheken hinzufügen. Zielspezifische Variablen propagieren auf ihre Voraussetzungen, d. H. Die .o Dateien, die Ihre Binärdateien umfassen.

+0

Das würde aus irgendeinem Grund nicht funktionieren und ich bin mir nicht sicher, wie man es debuggt. Gibt es einen anderen Weg, um die Datei, die gerade erstellt wird, zu bekommen und dann CFLAGS darüber anzuwenden? – user131274

+0

@ user131274 Versuchen Sie 'make-d' zu und' make -p'. –