Wie kann ich gcc beibringen, VPATH bei "make depend" zu verwenden?

Gast #903653
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.
Gast
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).
Angehängte Dateien:
Gast
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.
Gast
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 :)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.