Guten Morgen! Ich habe vor einiger Zeit ein kleines Makefile geschrieben, dass mir mein Projekt erstellt. Nun stört es mich, dass die Objekt- und Source-Dateien alle zusammen in einem Ordner liegen. Daher würde ich gerne im selben Ordner, in dem das Makefile liegt zwei Unterordner haben, von denen einer "source" heißt und die Quelldateien enthält und der andere "build" heißt und die Objekt-Dateien enthält. Das ausführbare Programm, soll jedoch wieder auf der Ebene des Makefiles liegen. Wie muss ich dafür das nachfolgende Makefile anpassen? ------------------------------------------------ CC = /usr/bin/g++ CFLAGS = -Wall -g -D_REENTRANT LDFLAGS = `` OBJ = Class1.o Class2.o Class3.o Class4.o Main.o project: $(OBJ) $(CC) $(CFLAGS) -o project $(OBJ) $(LDFLAGS) %.o: %.c $(CC) $(CFLAGS) -c $< ------------------------------------------------ Ich freue mich auf eure Antworten. Liebe Grüße, Andreas PS: An Links dieses Thema betreffend wäre ich auch interessiert.
> Wie muss ich dafür das nachfolgende Makefile anpassen?
1 | CC = /usr/bin/g++ |
2 | CFLAGS = -Wall -g -D_REENTRANT |
3 | LDFLAGS = |
4 | |
5 | SOURCE = source |
6 | BUILD = build |
7 | |
8 | OBJ = Class1.o Class2.o Class3.o Class4.o Main.o |
9 | |
10 | project: $(OBJ:%=$(BUILD)/%) |
11 | $(CC) $(CFLAGS) -o project $(OBJ:%=$(BUILD)/%) $(LDFLAGS) |
12 | |
13 | $(BUILD)/%.o: $(SOURCE)/%.cpp |
14 | $(CC) $(CFLAGS) -c -o $@ $< |
Ich habe das .c in .cpp umbenannt, da es sich bei den Quelldateien ja wohl um C++ handelt. Hat es mit dem `` bei LDFLAGS eine besondere Bewandtnis, oder soll die Variable einfach nur leer bleiben? Wenn ja, dann sollte da auch nichts stehen. > PS: An Links dieses Thema betreffend wäre ich auch interessiert. Auch wenn's jetzt blöd klingt: Aber es lohnt sich wirklich, das GNU-Make-Manual einmal intensiv durchzuarbeiten: http://www.gnu.org/software/make/manual/make.html Das Tool kann noch viel mehr, als man gemeinhin ahnt.
Danke für deine Hilfe. werde auf jeden Fall einen Blick in das Manual werfen. Gruß, Andreas
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.