Forum: Mikrocontroller und Digitale Elektronik makefile und ordentliche filestruktur


von trxoverflow (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
ich frage mich gerade ob es möglich ist mithilfe eines makefile eine 
ordentliche Dateien- Struktur darzustellen?

Wenn ich beispielsweise mehrere Verzeichnisse habe

wurzel (beinhaltet nur main)
|-->led
|-->uart
|-->etc..

Hierfür muss ich momentan in meinen c-files diese Struktur beachten
1
/*main*/
2
#include "../led/led.h"
3
#include "../uart/uart.h"
4
5
//src

Schöner wäre es allerdings, wenn man die Verzeichnisstruktur nur durchs 
makefile definieren müsste.


Könnte man dem makefile eigentlich auch sagen, dass es alles in ein 
Verzeichnis bauen soll?
Wenn ich z.B. im Verzeichnis "Build" das makefile habe, sollen alle 
durch make generierten Dateien dort abgelegt werden.

Bisher endeten alle meine Versuche in .elf Fehlermeldungen.

Gehen solche Anforderungen mit Make?

Gruß
--mx

von Karl H. (kbuchegg)


Lesenswert?

EIn Makefile ist eine Beschreibung für make

make macht folgendes:

eine Zieldatei hängt von einer (oder mehreren) Quelldateien ab.
Wenn eine der Quelldateien neuer ist (ein neueres Filedatum besitzt) als 
die Zieldatei, dann wird ein Kommando ausgeführt, das im Regelfall die 
Zieldatei aus den Quelldateien generiert.

Mehr macht make nicht. Insbesondere kümmert es sich nicht um 
irgendwelche Pfade. Alles was make interessiert: Wie ist das zeitliche 
Verhältnisse von Querlldateien zu Zieldateien und welches 
Commandline-Kommando muss ausgeführt werden, damit sich das ändert.

Was du aber wahrscheinlich haben möchtest: du möchtest deinem 
Compileraufruf, also dem 'Kommando' welches ausgeführt wird um ein 
Object-File aus veränderten C-Files zu erstellen, eine Liste von Include 
Files mitgeben, auf denen er Header Dateien finden kann.

Allerdings ist das des öfteren gar keine so gute Idee, wie es auf den 
ersten Blick aussieht.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Rekursive Makefiles sind Standard und funktionieren gut. Das ist der 
Zeitpunkt, wo garantiert ein Ahnungsloser mit einem gewissen 
Bullshit-Papier "... considered harmfull" rumprollen wird. Daher 
nochmal: Rekursive Makefiles sind Standard und funktionieren gut.

Suchpfade für Header gibt man bei den meisten Compilern mit -I an.

Allgemeine Definitionen kann man bei modernen Makes in 
Make-Include-Dateien packen.

Der Rest ist einfach etwas Fleißarbeit.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

trxoverflow schrieb:
> Könnte man dem makefile eigentlich auch sagen, dass es alles in ein
> Verzeichnis bauen soll?
> Wenn ich z.B. im Verzeichnis "Build" das makefile habe, sollen alle
> durch make generierten Dateien dort abgelegt werden.

Viel wichtiger ist, aus welchem Verzeichnis make aufgerufen wird. Deine 
Anforderungen sind am einfachsten einzuhalten, wenn beim Entwurf des 
Makefiles davon ausgegangen wird, dass make aus dem Build-Verzeichnis 
heraus gestartet wird. Dann funktioniert auch die Suche von 
Abhängigkeiten (Stichwort: VPATH) in akzeptabler Art und Weise.

@pnuebergang
Das Thema "Rekursives make" wurde vom OP gar nicht angesprochen, so dass 
jeglicher diesbezüglicher "Patellarsehnenreflex" in diesem Thread 
fehlplaziert ist.

Gruß
Marcus

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.