Hallo, habe mehere Routinen mit Headerdatei angelegt. Mit #include "xyz.h" und im makefile SRC ... xyz.c klappt es prima. mit #include "libs_tl/xyz.h" meckert er nur das er die xyz.c Datei in dem Makefile findet. Wie kann ich in dem Makefile den Pfad angeben das er in SRC nicht xyz.c sondern libs_tl\xyz.c auch findet ? Hab schon vieles probiert ( \\ \ / absolute Pfade u.s.w) hat aber alles nicht geholfen ! Hab ein Windows System und WinAVR. Danke im vorraus ! Thorsten
hi, hmm, ich habe den Eindruck dass du Sachen durcheinander bringst. "routinen anlegen in *.h" ... meinst du Deklarationen der Routinen? Weil nämlich die Definitionen ({} Teil einer Funktion) haben nichts in *.h zu suchen. ansonsten hat xyz.h nichts mit xyz.c zu tun xyz.h kann in hunderte andere c Dateien includiert werden. und eine dieser Dateien ist eben xyz.c, in der die Deklarationen implementiert werden. Compiler nämlich interessiert sich nur für .c Dateien und erzeugt aus diesen .o viele (aber mindestens eine) dieser .o Dateien werden durch Linker gebunden. Sprich wenn in xyz.h Deklaratioen steht void useless(void); die in xyz.c implementiert wird zu void useless(void){ int x[1000]; /**/ } so wird linker com Compiler erzeugten Assemlbercode für diese wegschmeisen, wenn er keinen Aufruf zu dieser Funktion aus anderen .o Dateien detektiert. Jetzt zu Pfadgeschichte ... im Makefile steht oft sowas MY_INC_DIRS := /pool/myinclude aber Sinn und Zweck ist nur diese Werte an Compiler weiterzureichen gcc -I $(MY_INC_DIRS) -I ist eine Option an gcc Compiler, die diesen veranlasst in zusätzlichen Verzeichnissen nach .h Dateien suchen. interessant wird es, wenn es mehrere wären. ZB /pool/inc1/super.h /pool/inc2/super.h gcc -I /pool/inc1 -I /pool/inc2 Da weiss ich auch nicht wie er vorgeht. Hope this helps
Lies mal im make manual (http://www.gnu.org/software/make/manual/make.html) über "VPATH" (4.5 Searching Directories for Prerequisites). In meinem makefile habe ich eine Zeile: VPATH = $(AVRCOMMON) In meinem Environment steht in AVRCOMMON der Pfad zu einem Verzeichnis mit c-Quellen, die eher eine Art Bibliothek darstellen, aber für jeden AVR unter Umständen neu übersetzt werden müssen (daher keine Library). Make sucht jetzt die unter SRC angegebenen Files zuerst im Projektverzeichnis, sind sie da nicht, wird in VPATH gesucht. Sind sie da, wird der Quelldateiname mit diesem vorangestellten Pfad an den Compiler übergeben. Die .o und .lst files finden sich aber wieder im Projektverzeichnis. Ist so Ähnlich wie -I für den Compiler für Header, aber eben für Make für Quelldateien. /Berndt
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.