2016-12-20 2 views
1

Ich weiß, dies ist eine Commong-Abfrage, aber ich habe Stunden damit verbracht, vorherige Antworten zu betrachten, aber bin immer noch ratlos. Ich habe keine große Erfahrung mit Makefiles und finde es schwierig, den Beispielen zu folgen.Makefile Verzeichnis Verwendung

Ich habe folgende Make-Datei:

CC=g++ 

CFLAGS=-c -Wall 
LDFLAGS= -lSDL2 -lSDL2_image -lSDL2_ttf 
SOURCES=main.cpp hello.cpp factorial.cpp 
OBJS=$(SOURCES:%.cpp=%.o) 
EXECUTABLE=hello 
FULLOBJS = $(addprefix obj/,$(OBJS)) 


all: $(SOURCES) $(EXECUTABLE) 

$(EXECUTABLE): $(OBJS) 
    $(CC) $(LDFLAGS) $(OBJS) -o [email protected] 

.cpp.o: 
    $(CC) -MD -I. $(CFLAGS) $< -o [email protected] 

clean: 
    -rm -rf $(OBJS) $(EXECUTABLE) $(OBJS:%.o=%.d) 


-include $(OBJS:%.o=%.d) 

Welche arbeitet als Ich mag würde. Es wäre jedoch noch besser, wenn ich die .h .cpp .o- und .b-Dateien übersichtlich in/header// source/und/object/relative-Unterverzeichnisse organisieren könnte. Könnten Sie mir bitte erklären, wie es geht?

Vielen Dank

+0

Möchten Sie separate Ordner für .h, .cpp, .o erstellen und den Pfad zu diesen Ordnern hinzufügen? – CroCo

+0

Ja wenn möglich. Ich nehme an, dass es einen besseren Weg gibt, als die Pfadzeichenfolgen für jede Datei separat anzugeben. Und ich nehme auch an, dass es eine Möglichkeit gibt, alle .o und .d Dateien, die von dem Makefile erstellt werden, in einem angegebenen Verzeichnis zu platzieren. – user7119460

Antwort

0

Für die CPP-Dateien platzieren, ist VPATH Ihr Freund, zB:

VPATH = ./src ./blah 

... wird das Makefile verursachen für Ihre CPP-Dateien in ./src suchen und ./blah (statt nur in dem Verzeichnis, in dem Makefile ist)

für H-Dateien, sollten Sie den Compiler eine Flagge passieren sagt sie, wo sie suchen, zum Beispiel:

CXXFLAGS += -I./headers -I./blah 

Möglichkeiten zum Platzieren von .o-Dateien in einem Unterordner finden Sie here.

+0

Vielen Dank für Ihre Hilfe! Wusste nicht, dass das Hinzufügen von VPATH so einfach war! – user7119460

Verwandte Themen