Hallo Forum,
ich bin mit meinem MACKEN-FILE am verzweifeln!!!
zu meiner Geschichte:
Möchte, mit einem XMC4500lite kit ein paar Sachen ausprobieren.
Am XMC4500 interssiert mich die UART mit bis zu 64 Bits.
Nun möchte ich mit WIN7 einem Makefile, Gnu Arm Tools, Mingw und CMSIS
die Sachen übersetzen.
Wenn ich alle benötigen .c und .h Files im gleichen Ordner/Verzeichnis
habe wird mit einem einfachen
Makefile die .elf Datei erzeugt.
Ich möchte aber die Dateien in verschieden Unterverzeichnissen zum
Makefile haben:
Aufbau so:
- Makefile
- scr
- inc
- lib
- CMSIS
- wenn nötig weiter LIBs
- obj // Object files
- out // .elf, .map, .lst Files
Leider bekomme ich mein Makefile nicht so hin,
dass diverse .c-Files aus verchiedenen Unterverzeichnissen compiliert
werden,
und als .o-Files im obj-Verzeichnis abgelegt werden um daraus die .elf
"gelinkt" zu werden.
Auch findet der Compiler die verschiedenen Include - Unterverzeichnisse
nicht?
Ich kämpfe jetzt schon 3 Tage, auch mit dem Internet, um auf eine Lösung
zu kommen.
Normalerweise sollte dieses vorgehen nicht so abwägig sein, aber im
Internet, auch hier in der Suche finde ich keine brauchbaren Infos wie
ich das Makefile dazu bringe, um meinen Wunsch zu erzeugen.
- wie bringe ich das Makefile dazu die .c und .h Dateinen in mehreren
Unterverzeichnissen zu suchen?
- wie bringe ich die Objects ins obj - Verzeichnis?
- was hat das -I beim aneinanderhängen mehrer Include Pfade mit
aufsich?
- gibt es in einem Makefile keine einheitlichen Vorgehensweisen?
Jedes Beispiel und Erklärversuche aus dem Internet sind alle immer
irgenwie anderster !?
Habe gespielt mit vpath (auch GROß), patsubst, addsuffix usw, aber ohne
Erfolg.
Bin für jeden Hinweis/Hilfe dankbar!
Grüße
BarneyBub schrieb: > Ich kämpfe jetzt schon 3 Tage, auch mit dem Internet, um auf eine Lösung > zu kommen. In der Zeit hättest du 20 mal eclipse installieren können, welches dir die makefiles automatisch generiert ;-) Ohne IDE zu programmieren und Debuggen ist sehr lästig, daher brauchst du eclipse o.ä. onehin.
BarneyBub schrieb: > - wie bringe ich das Makefile dazu die .c und .h Dateinen in mehreren > Unterverzeichnissen zu suchen? VPATH auf die entsprechenden Unterverzeichnisse zeigen lassen > - wie bringe ich die Objects ins obj - Verzeichnis? OBJS=$(patsubst %.c,%.o,$(SRCS)) und ein entsprechendes Compile-Rule aufsetzen. > - was hat das -I beim aneinanderhängen mehrer Include Pfade mit > aufsich? man gcc Hat mit make nichts zu tun. > - gibt es in einem Makefile keine einheitlichen Vorgehensweisen? make ist ein mächtiges Werkzeug, das lernt man nicht in einer halben Stunde. Deswegen gibt es auch für ein und dasselbe Problem zig verschiedene Lösungen (von denen die, die man so im Internet findet, oft nicht die besten sind).
Um Dateien in Verzeichnissen zu suchen, google mal nach vpath (Alles in $(...) sind vorher sinnvoll gesetzte Variablen, falls noch nicht bekannt). vpath %.c $(VPATH_C) vpath %.cpp $(VPATH_CPP) vpath %.cc $(VPATH_CPP) Hiermit kann man angeben, in welchen Verzeichnisen nach Dateien gesucht werden soll. Ojekte ins Builddir bringst Du mit folgender Regel: $(BUILD_DIR)/%.o: %.c $(CC) -o $@ $(CFLAGS) $(INCL) -c $< Hier ist dann vpath wieder praktisch, da es so für alle C-Code Dateien gilt. Die Frage mit -I verstehe ich nicht ganz. Dem Compiler sagt man mit dem Include Paramter, wo er zusätzlich nach Header suchen soll, bevor er das in den Standardverz. macht. Hat nichts mit make zu tun. Pro Verzeichnis ein -I. Für Makefiles gibt es eine einheitliche Vorgehensweise, indem man sagt, was man bauen will, wovon das abhängt und Rezepte anfügt. Google mal nach Makefile + manual. Es gibt von Gnu selber gute Manuals. Make ist halt am Anfang schwierig und unschön. Nachdem man sich damit ein wenig auseinandergesetzt hat, ist es nur noch unschön. Ohne Einarbeitung ausserhalb von Foren wird das eine ewige Qual bleiben.
Beitrag #4939779 wurde von einem Moderator gelöscht.
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.