Ich empfehle Ihnen dringend, dem Lernen beginnen make
, da es eines der grundlegenden Werkzeuge, die Programmierer verwenden. Und wenn Sie C++
lernen können, können Sie definitiv make
lernen.
In Ihrem Projekt haben Sie Quelldateien in ihren eigenen Unterverzeichnissen vergraben, so dass Sie alle mit dem Befehl $(shell find...)
verwenden können. Gleiches gilt für alle Header-Dateien in Ihrem Projekt.
Indem all:
die direkte Ziel es bedingungslos ausgeführt wird, und Sie verlieren die Vorteile der make
mit - nur kompilieren, wenn Sie etwas ändern.
Nachdem gesagt, dass die grundlegende Vorlage, die ich hier zur Verfügung stelle, könnte verbessert werden, nur die Quelldateien neu zu kompilieren, die geändert haben, aber das ist eine Übung für den Leser.
Ich denke, dies in Ihrem Fall funktionieren soll:
# set non-optional compiler flags here
CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic-errors
# set non-optional preprocessor flags here
# eg. project specific include directories
CPPFLAGS +=
# find cpp files in subdirectories
SOURCES := $(shell find . -name '*.cpp')
# find headers
HEADERS := $(shell find . -name '*.h')
OUTPUT := ttt
# Everything depends on the output
all: $(OUTPUT)
# The output depends on sources and headers
$(OUTPUT): $(SOURCES) $(HEADERS)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $(OUTPUT) $(SOURCES)
clean:
$(RM) $(OUTPUT)
Sie müssen ein grundlegendes Unix-Kommandozeilen-Terminal-Tutorial lesen. Was meinst du ein führendes '/' in einem Pfad? –
Sie können mit Make nichts bauen, bis Sie wissen, wie Sie es bauen * ohne * Make. – Beta