www.mikrocontroller.net

Forum: Compiler & IDEs Probleme mit Makefile


Autor: Sebastian__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;

}

Autor: Sebastian__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

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.