Datei: kompilieren alle .cpp-Dateien auf .o Dateien
Ich versuche zu schaffen, eine make-Datei, die kompiliert alle .cpp
Dateien in der test
Verzeichnis .o
Dateien in der obj
- Verzeichnis. Unten ist eine verkürzte version von dem, was ich Tue. Das problem ist, dass Aufrufe zu kompilieren, um die .o
Dateien haben die richtige .o
Namen, aber Sie alle sind in der Zusammenstellung der gleichen .cpp
Datei.
gcc -c -o obj/foo.o test/foo.c
gcc -c -o obj/bar.o test/foo.c
gcc -c -o obj/baz.o test/foo.c
Was muss ich ändern, um es kompilieren der entsprechenden .cpp
Datei?
CPP_FILES := $(wildcard test/*.cpp)
OBJ_FILES = $(patsubst test/%.cpp,obj/%.o,$(CPP_FILES))
obj/%.o: $(CPP_FILES)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
executable : $(OBJ_FILES) foo.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entsprechen müssen
%
für Ihre template-Regel. im moment sagen Sie, dass jeder .o hängt davon ab, jeder cpp-Datei. Und$<
ist der erste von Ihnen.Ersetzen Sie es mit: