mikrocontroller.net

Forum: Compiler & IDEs Make: Pfade umbiegen?


Autor: Mark Meier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, alle zusammen.
Ich arbeite seit kurzem mit AVR-GCC und verwende PN2 mit der
angepassten Standardvorlage von Makefile.

Da diese Vorlage alle temporären und Ausgabedateien in den selben
Ordner erstellt wie die Sourcen, wollte ich das ändern, um beim
Einchecken auf dem CVS-Server keine unnötigen Dateien zu übernehmen.

Ich habe versucht Makefile im Prj-Ordner, .c und .h-Dateien im
Src-Ordner abzulegen und temporäre bzw. Ausgabedateien in spezielle
Tmp- bzw. Out-Ordner erstellen zu lassen.

Leider klappte das nie komplett ohne Fehlermeldungen.

Hat vielleicht jemand sich damit beschäftigt und eine funktionierende
Vorlage erstellen können? Oder hat jemand einen Tipp, wie der Makefile
diesbezüglich anzupassen wäre?

Oder hat jemand einen guten Link auf die deutsche Doku zu Gnu-Make?
Englisches Originaldokument mit knapp 180 Seiten ist auch nicht ohne.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es tut leider nicht so ohne weiteres...  Eric Weddington hatte mal
einen Versuch gemacht, das zu implementieren, aber es war sowas von
nichttrivial, dass er das dann doch nicht mehr in die letzte Version
von WinAVR aufnehmen wollte.  Wenn man Tools wie automake zu Hilfe
nimmt, die dann ins generierte Makefile komplette (relative) Pfade
schreiben, geht das natürlich, aber das ist eine mächtige Kanone für
diesen Spatzen.

Hmm, ins CVS einfach so neue Dateien aufnehmen?  Das würde ich nun
wieder nicht machen. ;-)

Das einfachste, was du gegen dein Problem aber tun kannst ist, dass du
dir eine .cvsignore-Datei mit anlegst, in die du alle Dateinamen
aufnimmst, um die sich CVS nie kümmern soll, also so ungefähr:

*.o
*.hex
*.lss
*.sym
*.elf

etc. pp.  .cvsignore selbst darf natürlich ruhig mit ins CVS.  Danach
sollte auch ein »cvs add *« keine dieser Dateien mehr mit aufnehmen.

Autor: Mark Meier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist schon mal vorgekommen, dass temporäre Dateien zusammen mit neuen
Source-Dateien eingecheckt wurden (kann ja immer passieren).

Zudem muss ich mich bei den AVR-Projekten an die bestehende
Projekt-Stukturen halten. Und übersichtlicher ist es auch (zumindest
wenn man an diese Projektunterteilung gewohnt ist). Es muss eben zum
bestehenden Workflow passen.

Danke für den Tipp mit der .cvsignore-Datei! Ich werde es bestimmt
demnächst ausprobieren.

Ich habe gedacht, dass die meisten passen ihre Makefiles an. Es scheint
aber, dass es genau umgekehrt ist. Na ja hätte sein können.

Ich hätte es auch mit automake versucht. Aber es benötigt wiederum
autoconf, was aber unter Windows nicht einsetzbar ist.
Muss mich eben weiter umsehen und mit make beschäfigen...

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur so: das grundlegende Problem ist, dass du eigentlich für jedes
Kommando auch in das build-Verzeichnis wechseln musst, damit du dir
sicher sein kannst, dass auch wirklich alle (vorhergesehenen und
unvorhergesehenen) generierten Dateien dort hinfallen (einschließlich
Coredumps etc. pp.).  Dann musst du aber den Zugriff auf den Quellcode
mit expliziten Pfadangaben versehen.

Autor: Mark Meier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das habe ich mir auch so gedacht. Pfade mehr oder weniger fest vorgeben
und mit Dateinamen zusammen übergeben.

Was die unvorhergesehenen Dateien angeht, so rechne ich hier nicht mit
Problemen. Welche Dateien bei "normalen" Projekten erzeugt werden
sieht man schon bei ersten Beispielprojekten (.o, .o.d, .elf, .hex,
.lss, .lst, .map, .sym, .eep) und diese sind in der Makefile-Vorlage
schon erfasst. Wenn man selbst irgendwelche Extras verwenden will, dann
muss dass natürlich berücksichtigt werden.

So weit die Theorie. In der Praxis allerdings wurden meine
Pfad-Anpassungen von make noch nicht komplett akzeptiert. Ich muss noch
rausfinden wie ich z.B. "$(<:.c=.lst)" richtig anpasse und noch einige
andere Stellen.

Ein Makefile (nich auf der Basis von der WinAVR-Vorlage) habe ich schon
so weit bekommen. Da ist allerdings lange nicht alles das enthalten, was
in der umfangreichen Vorlage zu finden ist. Aber nach und nach werde ich
es schon hinkriegen.

Jedenfalls, danke für die Antwort.

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.