Makefile subfolders
-
Hi,
ich arbeite grad an meinem ersten größeren C Projekt und muss mich jetzt leider ein bischen mit make rumschlagen. Undzwar is mir noch nicht ganz klar, wie ich mit make bei Projekten mit Unterordnern umgehe. Ich hab bereits irgendwo gelesen, dass man in diesem Fall wohl für jedes UNterverzeichnis ein eigenes Makefile macht, hab aber nichts wirlich handfestes zu dem thema gefunden.
Kennt jemand ein gutes Manual oder Tutorial, wie man mit Makefiles am besten umgeht, wenn die Quelldateien auch in Unterordnern zu finden sind.Gruß toti
-
Normalerweise packt man - wie du bereits gesagt hast - in jeden Unterordner eine Makefile. Aus dem Oberordner rufst du dann via
$(MAKE) -C <unterordner>
make für den Unterordner auf.Das alles ist im GNU/Make Manual (s. Google) recht gut erklärt (Abschnitt Recursive Makefiles oder so ähnlich).
-
Hi,
danke für die Antwort. Unter make Recusive find ich was dazu, wie ich make rekursiv benutze, worauf ich sicherlich noch angewiesen sein werde, aber ich suche momentan eher, was ich in die Makefiles der einzelnen Ordner hineinschreiben muss, damit dort die Objekte erzeugt werden und was ich dann in mein "Haupt"-Makefile schreiben muss, damit das ganze richtig zusammen gelinkt wird, aus den verschiedenen Ordnern.
Gruß toti
-
da liegt ein mißverständnis vor.
totix801 schrieb:
Hi,
danke für die Antwort. Unter make Recusive find ich was dazu, wie ich make rekursiv benutze, worauf ich sicherlich noch angewiesen sein werde, aber ich suche momentan eher,man kann make echt rekursiv benutzen. auch makefiles. aber das ist eher selten und eher was für spezialisten.
was ich in die Makefiles der einzelnen Ordner hineinschreiben muss, damit dort die Objekte erzeugt werden und was ich dann in mein "Haupt"-Makefile schreiben muss, damit das ganze richtig zusammen gelinkt wird, aus den verschiedenen Ordnern.
also nicht rekursiv. nur daß sich die einzelnen makefiles aufrufen.
und lustigerweise nennen die maker genau das rekursiv.
http://kooz.org/rkowen/howto/slides/make/slides/makerecurs.html
-
Hi,
also mien Problem ist inzwischen gelöst. Ich habe mir jetzt nicht für jeden Unterordner ein Makefile angelegt sonder hole mir alle Quelldateien aus den Subfoldern per find. Vielleicht hilft es ja jemanden mit dem selben Problem, auch wenn es vielleicht nicht die eleganteste Methode ist.
VERSION=2.0 DESTDIR=/ CC=/scratchbox/compilers/cs2005q3.2-glibc2.5-arm/bin/arm-linux-gcc LIBRARIES= gstreamer-0.10 CFLAGS= -w -pedantic `pkg-config --cflags $(LIBRARIES)` LDFLAGS=`pkg-config --libs $(LIBRARIES)` OBJ=$(shell find ./src -name "*.c" -printf %f\ | sed 's/\.c/.o/g') SRC=$(shell find ./src -name "*.c") all: perikles perikles: $(OBJ) $(CC) $(LDFLAGS) -o perikles *.o $(OBJ): $(SRC) $(CC) $(CFLAGS) -c $(SRC) clean: rm *.o
Gruß Torsten