Hallo, inzwischen arbeite ich hauptsächlich unter linux und habe mir dort (in Analogie zu WinAVR) angewöhnt, ein Unterverzeichnis für die make-Datei und die binär-Erzeugnisse anzulegen. Bei mir heißt sie "nix". Im Makefile habe ich die Variable VPath auf ".." gesetzt. Das funktioniert soweit auch ganz gut, nur habe ich keine Abhängigkeiten zu den Headern, d.h. wenn ich merke, dass ein make nix macht, muss ich einen "make -B" hinterher schicken. Das würde ich gerne ändern, kann es alleine jedoch nicht.
GCC ist das egal, Du must halt die Abhängigkeiten im Makefile auch richtig haben..mit den richtigen Pfaden. Wie sieht das Makefile denn aus?
Hallo Bernhard, > GCC ist das egal, Du must halt die Abhängigkeiten im Makefile auch > richtig haben..mit den richtigen Pfaden. Schon klar, nur mag ich nicht jedesmal die make-datei anpassen, wenn ich nen neuen Header erzeuge oder wenn ich einen include hinzufüge. Deshalb wollte ich das "make depend" zum Laufen bekommen. Beim WinAVR scheint es ja auch zu klappen. Vielleicht läßt sich ja eine Regel zufügen oder anpassen, sodass GCC die Dateien auch findet. > Wie sieht das Makefile denn aus? Ich habe mir mit MFile mal eine Makedatei erfinden lassen. Dann habe ich die Optionen passend zu einigen Freds aus diesem Forum angepasst und seither kopiere ich den für neue Projekte und ändere nur noch den Kopfbereich (Zeilen 8-16).
VPATH wird nur von make, nicht aber vom avr-gcc ausgewertet, deswegen findet der Compiler die Dateien nicht. Du kannst aber folgendes tun: In Zeile 221
1 | depend: |
durch
1 | depend: $(SRC) $(ASRC) |
und in Zeile 230
1 | $(CC) -M -mmcu=$(MCU) $(CDEFS) $(CINCS) $(SRC) $(ASRC) >> $(MAKEFILE) |
durch
1 | $(CC) -M -mmcu=$(MCU) $(CDEFS) $(CINCS) $^ >> $(MAKEFILE) |
ersetzen. Dann bekommt der Compiler von make die richtigen Pfade geliefert. Statt der Option -M kannst du auch -MM verwenden, dann wird die Dependency-List nicht ganz so lang, da die Standard-Header-Files, die sich normalerweise nicht ändern, ausgespart werden.
yalu, Du bist mein Held :) Danke sehr. Genau das habe ich gesucht. Der Tip mit -MM gefällt mir auch sehr gut! Habe noch ein virtuelles Target zugefügt, sodass "make depend" bei einer Änderung der make-Datei automatisch ausgeführt wird ... Langsam wird's rund :)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.