Forum: Mikrocontroller und Digitale Elektronik MAKEFILE vs. BAT


von Weinga-Unity (Gast)


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

von Oryx (Gast)


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

von Peter D. (peda)


Angehängte Dateien:

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

von Matthias (Gast)


Angehängte Dateien:

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

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
Noch kein Account? Hier anmelden.