mikrocontroller.net

Forum: Compiler & IDEs Makefile


Autor: Torsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Ich habe ein C- Prog. mit eigenen Header- Files. An welcher Stelle muß 
ich die im makefile einbinden?
Im C- File sind die mit #include "probe.h" eingebunden und befinden sich 
im selben Verzeichnis wie das C- File.
Habe ein Win98 System.

Danke

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die h-Dateien müssen nicht im Makefile eingetragen werden, nur die 
c-Dateien.

MfG
Andreas

Autor: David Epping (it-web)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mir ist klar, dass *.h Dateien keinen extra Buildbefehl im makefile 
brauchen, da sie ja per include eingebunden sind, und daher 
mitcompiliert werden, wenn die c-datei übersetzt wird.

Aber wie bemerkt make änderungen an h dateien, wenn diese nirgends 
auftauchen? Oder passiert das garnicht und man muss erst ein clean 
machen bevor die änderungen erfasst werden?

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
David Epping wrote:
> Aber wie bemerkt make änderungen an h dateien, wenn diese nirgends
> auftauchen?

Gute Frage. Das würde mich auch interessieren.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Indem man gcc einmal mit allen Quelldateien und -MM als 
Kommandozeilenparameter ausführt. Das erzeugt ein Makefile mit allen 
Abhängigkeiten. Das kann man im normalen Makefile dann includen.

Autor: Lanius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
von Hand hier ein Beispiel:


fat.o: fat.c fat.h mmc.h makefile lanimacros.h
  msp430-gcc  ${PARAMETER} fat.o fat.c


fat.o wird neu übersetzt wenn sich fat.c, fat.h, mmc.h, makefile oder 
lanimacros.h geändert haben

Autor: David Epping (it-web)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau so kenne ich das auch, dann muss man eben ständig das makefile an 
alle abhängigkeiten anpassen.

nur hat mich die ursprüngliche Antwort irritiert

> die h-Dateien müssen nicht im Makefile eingetragen werden, nur die
> c-Dateien.

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt einen Weg, die Abhängigkeiten automatisch zu erzeugen, schau Dir 
dazu mal die makefiles in der WINAVR-Distribution an.

Dabei werden vom gcc-Compiler .d Dateien erzeugt (steht für .depency). 
Bei WINAVR-Beispiel-makefiles landen diese im .dep Verzeicnis. Das 
passiert mit diesen Zeilen:
# Compiler flags to generate dependency files.
GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d 

Diese werden bei späteren makefile Aufrufen durch diese Zeilen 
mitberücksichtigt:
# Include the dependency files.
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) 

Durch diese Technik musst Du nur die .c Files angeben, Änderungen bei 
den includes werden automatisch mitgeführt.

Gruß, Stefan

Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe auch eine Frage zum Makefile :).

Ich benutze Mfile um mir meine Makefiles zu erstellen und diese nutze 
ich dann im AVRStudio. Wenn ich nun mehrere .c Dateien habe, muss ich 
immer in der main.c alle Dateien mittels include <foo.c> einbinden, da 
bei mir das nicht funktioniert, wenn ich die .c Dateien nur im makefile 
mit angebe. Andersrum geht es jedoch. Wenn ich im makefile nichts angebe 
und nur in der main.c alle nötigen Dateien include, dann geht das auch.

Und noch eine Frage :

Ich habe es noch nie geschafft, ein Projekt mit der "Hauptdatei" main.c 
zu erstellen. Bei mir heißt die Hauptdatei immer so wie ich auch das 
Projekt genannt habe, da ansonsten der Compiler immer meckert, dass er 
keine .hex mit dem Projektnamen erstellen kann. Ist zwar nicht schlimm 
aber andere haben in ihren Projekten immer eine main.c, wie machen die 
das?

Gruß,

Marian

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.