Da mein Englisch anscheinend nicht ausreicht: Wo finde ich eine deutsche Anleitung, um ein makefile zu erstellen? Ich habe jetzt eins von der WinAVR-Installation genommen und einfach den Dateinamen und Controller geändert. Allerdings schaffe ich es jetzt nicht mein Programm auf verschiedene Dateien aufzuteilen (LCD, UART, ADC usw). Bei den GCC-Beispielen habe ich auch schon geschaut, allerdings sind die makefiles von einem anderen Format(?). Ich suche eigentlich nur ein simples makefile, und am besten mit Erklärungen für die einzelnen Optionen. MfG Arnd
Nun, so schlecht kommentiert ist doch das WinAVR Beispiel-Makefile nun wirklich nicht. Sorry, aber wenn Dein Englisch dafür nicht reicht, wie willst Du dann die Datenblätter des AVR verstehen? Deren Verständnis ist praktisch die Grundlage für ein erfolgreiches Arbeiten... # List C source files here. [...] SRC = $(TARGET).c Was braucht es noch an Erklärung? Der Makro SRC bekommt die Namen der C-Quelldateien zugewiesen, wobei die Standardeinstellung der Projektname [$(TARGET)] mit angehängtem .c ist. Weitere Dateinamen sind dort einfach dranzuhängen. Falls Du $(TARGET).c nicht haben möchtest (weil Du z. B. stattdessen ein main.c hast), dann lösch es einfach. Ein weiteres Beispiel folgt stehenden Fußes: # If there is more than one source file, append them above, or modify and # uncomment the following: #SRC += foo.c bar.c Damit kannst Du den Makro SRC um weitere Elemente ergänzen, die in einer eigenen Zeile stehen (mußt natürlich das # ganz vorn entfernen), so daß Du mehr als eine Zeile mit Dateinamen haben kannst. Alternativ gilt generell für Makefiles, daß man mit einem Backslash unmittelbar am Zeilenende kennzeichnet, daß die folgende Zeile logisch zu dieser dazugehört -- ganz genau, wie das übrigens auch in C der Fall ist. (Wo `make' das wohl hergenommen hat? ;-)
Naja, ein Makefile erstellen musst Du ja gar nicht ... es gibt ja schon eins! Einfach das fertige Makefile aus WinAVR\sample in Dein Projektverzeichnis kopieren und dort Deine Sourcen eintragen, wie Jörg schon geschrieben hat. An der Stelle wollte ich mal ein ganz großes Lob an Eric und Jörg loswerden: besser als hier kann man ein Makefile eigendlich garnicht machen. Vor allem die automatische Erkennung von Abhängigkeiten zwischen den Files hat mir gefallen: # Automatically generate C source code dependencies. Das bedeutet, sobald ein .h File geändert wird, werden automatisch alle .c Files, die dieses benutzen, neu compiliert. In vielen Makefiles sind diese Abhängigkeiten von Hand eingetragen, was zu garstigen Fehlern führt, wenn sie nicht mehr ganz aktuell sind. Was das Englisch betrifft: Englisch ist für MC/Elektronik so essentiell wie Maus bedienen für den Computer, klar gehts auch ohne ... Stefan
Hier : http://rfhs8012.fh-regensburg.de/~opel/docs/makefiles.php gibt es eine Anleitung zur Erstellung eines Makefiles in Deutsch
OK, ich weiß zwar, daß Programmer's Notepad künftig eine Projektverwaltung plant, die auch Makefile generieren können soll, und daß darin auch Eric Weddingtons Hoffnungen für WinAVR liegen. Da das aber noch ein Weilchen dauern kann und da ein kleines Tool auch nicht-WinAVR-Nutzern die Arbeit erleichtern kann, habe ich mal ein schnelles Projektchen gemacht für einen Makefile-Generator speziell für AVR-GCC. Das soll ausdrücklich keine eierlegende Wollmilchsau sein oder werden, es ist auch keine großartige Weiterentwicklung mehr geplant. Andererseits wollte ich mich nicht ausschließlich auf Eric's Makefile template festlegen (das für dieses Projekt sowieso leicht modifiziert worden ist), sondern es sollen auch ähnliche Varianten beispielsweise für Unix-Nutzer (wie mich selbst :) als Eingabe akzeptiert werden. http://www.sax.de/~joerg/mfile/ Eric Weddington wird das sicherlich ins nächste WinAVR mit einbauen, aber das ist noch ein wenig hin.
Man braucht kein Makefile, man kann doch den AVRGCC auch direkt von der Kommandozeile aufrufen (vorzugsweise in einer Batch). Mit dem Sourcefilename "*.c" sagt man ihm dann einfach, daß er sämtliche C Files im aktuellen Verzeichnis zusammenlinken soll. Und mit dem Schalter -xc verhindert man Fehler in der DOS-Box, da dort "*.c" zu Großschrift expandiert wird. Diese Batch kann dann universell für alle Deine Projekte verwendet werden. Lediglich der MCU-Typ muß noch entsprechend eingetragen werden. Man kann aber auch den MCU-Typ einer Umgebungsvariable zuweisen und diese dann in der Batch dem AVRGCC übergeben. Peter
> Man braucht kein Makefile, man kann doch den AVRGCC auch direkt von > der Kommandozeile aufrufen (vorzugsweise in einer Batch). Peter, ich weiß, daß Du diese Variante bevorzugst, kannst Du ja auch gern tun. Aber die Urväter von Unix haben vor ca. 20 Jahren bereits gemerkt, daß das nicht der Stein der Weisen ist, daher gibt's `make'. Es ist ein Stückchen flexibler als ein reines Script (das haben die Unixer nämlich vor `make' ebenfalls benutzt), und der vorliegende Makefile-Generator dient vor allem auch dazu, die möglichen Knöpfe für die Compilierung einzustellen. Das Problem hast Du nämlich auch mit Deinem Script immer noch: Du mußt Dir all Deine Optionen jedesmal aufs Neue zusammensammeln.
@Joerg, ich hatte es auch nicht als EiWomiSa angesehen sondern nur als Schnellschuß, um sofort mit WINAVR loszulegen. Wenn man da noch viele spezielle Optionen angeben will, wird ja irgendwann das DOS-Zeilen-Limit unbarmherzig zuschlagen. Aber bisher ist die einzige Option, die ich ändere, der MCU-Typ. Peter
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.