Forum: Compiler & IDEs Probleme mit Makefile


von Sebastian__ (Gast)


Lesenswert?

Hallo,
also Codevision Benutzer will ich für einge kleine quelloffene Projekte
den AVR-GCC Compiler benutzen.
Also WinAvr runtergeladen, installiert und mal ne kleine Testroutine
geschrieben.
Dann ein Makefile mit Mfile von Jörg Wunsch erstellt.
1. Problem:
   ich gebe zb. bei Main File "test" ein weil meine Datei test.c
heisst
   Controller eingestellt usw.,
    Das ist soweit OK:
   # Target file name (without extension).
   TARGET = test

   Das nicht ??:
   # List C source files here. (C dependencies are automatically
generated.)
   SRC =
   # List C++ source files here. (C dependencies are automatically
generated.)
   CPPSRC = main.cpp

ich habe das dann so geändert:
   # List C source files here. (C dependencies are automatically
generated.)
   SRC = test.c x.c<- ohne diese angabe nimmt der GCC x.h als include
nicht
   # List C++ source files here. (C dependencies are automatically
generated.)
   CPPSRC =

was mache ich falsch, bzw. ist das so vorgesehen das man alle *.c files
noch mal manuell in das makefile eingeben muss?

Sebastian

von Thomas (Gast)


Lesenswert?

Wenn du mehrere .c Dateien in deinem Programm hast musst du die Dateien
manuell unter SRC eintragen.
Der Name der unter TARGET eingetragen wird ist auch der Name des
erzeugten Hex-Files.
Eigentlich steht unter SRC noch SRC = $(TARGET).c
Somit wird, wenn du als Target test angibst, nach einer Datei test.c
gesucht und diese übersetzt.

Die Header-Dateien bindest du in deinem Programm mittels #include ein.

von Sebastian__ (Gast)


Lesenswert?

ok, also muss doch jedes Modul extra in das Mekefile eingetragen
werden.
Also wenn ich dann also zb. i2c.h & lcd.h in die software eingebunden
hbaen müssen dann also auch i2c.c und lcd.c in das Makefile eingetragen
werden.

Was ist aber wenn ich zb eine solch eine konstuktion habe:
i2c.c
#include "i2c.h"
int ReadByte{
 return(0);
}

tcp.c
#include "tcp.h"
include "i2c.h"

int Read(void){
 int x=0;

}

von Sebastian__ (Gast)


Lesenswert?

.. so iregndwie hat sich der beitrag zu früh abgeschickt.

muss ich bei der oben genanneten konstuktion dann rekursiv alle *.c
dateien einfügen wenn ich zb. die datei tcp.h include und daraus eine
funktion brauche die auf die i2c.c zugreift?
Kann man das automatisieren?
Also wenn ich zb. die tcp.g  include und die tcp.c in das makefile
schreibe ich nicht auch noch die i2c.c ins makefile schreiben muss.

MfG
Sebastian

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ja, natürlich musst du alle .c-Dateien angeben, die du
compilieren möchtest.  Die Header-Dateien sind völlig
unabhängig davon.

Man könnte das sicher auch automatisieren, aber sofern es
weniger als 10 oder so Dateien sind, ist vermutlich cut&
paste eines ls *.c von der Kommandozeile in das Editorfenster
die einfachste Lösung.  Wenn du die Checkbox bei Mfile
(Makefile -> Enable Editing of Makefile) setzt, kannst du
selbst Mfile als primitiven Editor benutzen.

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.