Forum: PC-Programmierung Makefile anpassen


von Andreas W. (avedo)


Lesenswert?

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.

von Yalu X. (yalu) (Moderator)


Lesenswert?

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

von Andreas W. (avedo)


Lesenswert?

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