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
Hallo, die h-Dateien müssen nicht im Makefile eingetragen werden, nur die c-Dateien. MfG Andreas
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?
David Epping wrote: > Aber wie bemerkt make änderungen an h dateien, wenn diese nirgends > auftauchen? Gute Frage. Das würde mich auch interessieren.
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.
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
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.
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:
1 | # Compiler flags to generate dependency files.
|
2 | GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d |
Diese werden bei späteren makefile Aufrufen durch diese Zeilen mitberücksichtigt:
1 | # Include the dependency files.
|
2 | -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
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
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.