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
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.
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; }
.. 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.