mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MAKEFILE vs. BAT


Autor: Weinga-Unity (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Eine Frage bezogen auf das Kompilieren mit MAKEFILE und BAT:
Annahme, man hat ein Projekt mit folgenden Files:
MAIN.C
MAIN.H
UART.C
UART.H

BAT-Version: Man muss in eine Zeile schreiben, dass man zuerst die 
MAIN.C, dann die UART.C kompilieren will, und dann soll noch gelinkt 
werden.

Will man nun eine TIMER.C und TIMER.H in das Projekt hinzufügen, muss 
man die BAT umschreiben.

Wie sieht das bei MAKEFILE aus?
Muss mann für jedes Projekt eine eigene MAKE schreiben, bzw. Änderungen 
vornehmen, wenn man eine Datei hinzufügt bzw. entfernt?

Bitte klärt mich auf.

mfg Weichinger Klaus

Autor: Oryx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du brauchst für jedes Projekt ein makefile.

Jede Datei für das Projekt muß ins makefile.

Wenn man sich an die Syntax der makedateien gewöhnt hat, ist das auc 
nicht so wild.

Der Vorteil des makefiles gegenüber einer Batchdatei ist der, das nicht 
immer alles kompiliert werden muß, sondern nur das, was sich geändert 
hat.

Oryx

Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:
  • C.bat (2,17 KB, 235 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
Hallo Klaus,

eine Batch hat gegenüber einem Make ne Menge Vorteile.

Anbei meine C.BAT für den Keil.

Eine Batch braucht man nicht für jedes Projekt neu editieren.

Der For Befehl erlaubt es nämlich alle Aktionen für alle Files in dem 
gerade aktuellen Verzeichnis durchzuführen.

Es werden zuerst alle *.C51 Files kompiliert, alle *.A51 Files 
assembliert und dann alle *.obj Files zusammengelinkt.


Eine Spezialität des Keil ist dann noch das AMAKE. Dieses kann 
nachträglich die Registerverwendung optimieren und startet dazu bei 
Bedarf einen weiteren Compilerdurchgang.


Einfacher gehts nun wirklich nicht:
Einfach ein Projektverzeichnis aufmachen, dort alle benötigten 
Quelltextfiles hinein stellen und "C"+Enter drücken.


Schade, daß so etwas nicht beim GCC für den AVR möglich ist :-(


Peter

Autor: Matthias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

das Peter kein Fan von make ist wissen wir ja. Ich persönlich finde es 
genial. Wenn mans mal begriffen hat (ich geb zu das das dauern kann) 
gibt es nichts besseres.

Anbei mal mein makefile das ich für diverse Projekte verwende. Man muß 
zwar jede neue Sourcedatei neu in das makefile eintragen aber das ist 
eine einmalige Sache und kann dan vergessen werden.

In dem angehängten makefile wird die main.c immer dann übersetzt wenn 
sich
main.c oder version.h oder hardware.h seit der letzten aktion geändert 
haben.

Alle anderen .c Dateien werden neu übersetzt wenn sich die .c-Datei oder 
die entsprechende .h-Datei oder die hardware.h geändert haben.

Matthias

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.