mikrocontroller.net

Forum: Compiler & IDEs WinAVR MFile SRC =.


Autor: ted (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,
bin grade am Verzweifeln. Ich habe ein Projekt mit mehreren .c und .h 
Files.
Eine dieser Files, möcht ich in einem separatem Verzeichnis sammeln und 
später für andere Projekte nutzen. Eine Art Bibliotek.

Im Makefile, muss ich ja alle .c Files in die SRC Zeile eintragen.
Für mein main.c wir ja $(TARGET).c  benutzt, macht es ja auch 
automatisch mit MFile. Doch wie ist die genaue Syntax für .c Files in 
einem anderen Verzeichniss. Gebe ich den Pfad in der Art an 
C:\WinAVR\Wunschverzeichniss\test.c dann bekomme ich Fehlermeldungen wie 
"multiple target patterns"

Kann mir da jemand helfen?

: Verschoben durch Moderator
Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es wäre einfacher zu antworten, wenn man deine Verzeichnisstruktur 
kennen würde.

Für den Fall dass du im aktuellen Verzeichnis mit main.c und Makefile 
ein Verzeichnis Wunschverzeichnis hast und darin ein test.c:
TARGET = main
SRC = $(TARGET).c Wunschverzeichnis/test.c
usw.

Du kannst auch mit ../ im Verzeichnisbaum runterklettern in Richtung 
Hauptverzeichnis und dann auf andere Äste klettern
TARGET = main
SRC = $(TARGET).c ../../irgendwo/Wunschverzeichnis/test.c
usw.

Auch auf andere Bäume auf anderen Laufwerken müsstest du kommen können. 
Das habe ich aber nicht getestet.
TARGET = main
SRC = $(TARGET).c c:/WinAVR/Wunschverzeichnis/test.c
usw.

Wenn im Wunschverzeichnis auch Includedateien stehen, die z.B. von 
test.c oder main.c benutzt werden, dann sollte dieser Pfad in 
EXTRAINCDIRS = stehen, wenn du das Makefile nach Beispiel Makefile 
benutzt.

Wenn im Pfad Leerzeichen sind, dann die Argumente in "" klammern, weil 
das Leerzeichen ja ein reserviertes Trennzeichen für die Argumente in 
den ... = ... Zeilen ist.

Autor: ted (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan,
danke für die Tipps!
Ich habe es jetzt so gemacht:

Deine erste Variante, sprich, die "Bibliotek" als Ordner in das 
Projektverzeichniss kopieren und dann werkeln.

Ich habe hier im Forum ein gutes Argument gegen mein ursprüngliches 
Vorhaben, gelesen. Denn wenn man etwas in seiner Bibliotek ändert, 
entsteht evtl. wo anders ein Problem. Daher die "Refernzbibliotek" 
kopieren und die Kopie im Projekt ändern.

So, und weiter gehts :-)


Gruß
Ted

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das "Gegenargument": Du erzeugst so lauter lokale Kopien deiner 
Bibliothek und in irgendeiner hast du den Bugfix vergessen den du in der 
anderen vor Wochen gemacht hast. Dann suchst du dich dirmelig.

Besser ist eine Versionsverwaltung bei der du 1. Kommentare zu 
Änderungen eingeben kannst (musst) und 2. problemlos einen älteren Stand 
reproduzierar entnehmen kannst.

Ein weiterer Tipp: Speichere und Ändere nichts in dem Verzeichnis der 
Toolchain (WinAVR). Bei einem Update kannst du dann die Versionen 
einfach austauschen ohne auf Zusätze oder Änderungen Rücksicht nehmen zu 
müssen.

Idealerweise speicherst du die Toolchain auch in die Versionsverwaltung 
rein und kannst so komplette Projekte restaurieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.