Forum: Compiler & IDEs WIN7 ARMGCC Makefile


von BarneyBub (Gast)


Angehängte Dateien:

Lesenswert?

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

von Dr. Sommer (Gast)


Lesenswert?

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.

von Markus F. (mfro)


Lesenswert?

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).

von Andreas E. (hismastersvoice)


Lesenswert?

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 vom Autor 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
Noch kein Account? Hier anmelden.