Makefile anpassen

OP #1919299
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.
Moderator
> 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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.