Für das Leben von mir kann ich nicht herausfinden, wie die mv-Anweisungen in der folgenden Make-DateiProjekt Makefile Probleme mit Google-Test
TEST_DIR = ../gtest
USER_DIR = src
TESTS_DIR = tests
OBJ_DIR = obj
CPPFLAGS += -isystem $(GTEST_DIR)/include -I$(USER_DIR)
CXXFLAGS += -g -Wall -Wextra
TESTS = test
GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
$(GTEST_DIR)/include/gtest/internal/*.h
all : $(TESTS)
clean :
rm -rf obj
rm -rf bin
mkdir obj
mkdir bin
GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
$(OBJ_DIR)/gtest-all.o : $(GTEST_SRCS_)
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \
$(GTEST_DIR)/src/gtest-all.cc
mv gtest-all.o obj/gtest-all.o
$(OBJ_DIR)/gtest_main.o : $(GTEST_SRCS_)
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \
$(GTEST_DIR)/src/gtest_main.cc
mv gtest_main.o obj/gtest_main.o
$(OBJ_DIR)/gtest.a : $(OBJ_DIR)/gtest-all.o
$(AR) $(ARFLAGS) [email protected] $^
$(OBJ_DIR)/gtest_main.a : $(OBJ_DIR)/gtest-all.o $(OBJ_DIR)/gtest_main.o
$(AR) $(ARFLAGS) [email protected] $^
$(OBJ_DIR)/addition.o : $(USER_DIR)/addition.cpp $(USER_DIR)/addition.h $(GTEST_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $<
mv addition.o obj/addition.o
$(OBJ_DIR)/test.o : $(TESTS_DIR)/test.cpp $(USER_DIR)/addition.h $(GTEST_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(TESTS_DIR)/test.cpp
mv test.o obj/test.o
test : $(OBJ_DIR)/addition.o $(OBJ_DIR)/test.o $(OBJ_DIR)/gtest_main.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o [email protected]
Das Problem ist die mv test.o obj/test.o Linie zu entfernen und die anderen mögen es. Ich weiß, dass es einen Weg gibt, dies automatisch für dich tun zu lassen, aber für das Leben von mir kann ich es nicht finden.
Dies ist das vorgefertigte Makefile, das mit Google Test geliefert wird, das ich für mich modifiziert habe.
Es tut mir leid, ich denke, ich verstehe nicht. Ich habe alles in meinem Makefile unterhalb von GTEST_HEADERS durch den von Ihnen angegebenen Code ersetzt. Ich erhalte einen Fehler: Ziel 'obj/gtest-all.o 'stimmt nicht mit dem Zielmuster überein –
@JAndrewMcCormick Ich bemerkte nur jetzt die Dateinamen sind unterschiedlich, ändere' gtest-all.cc' zu 'gtest_all.cc', ich habe das Makefile entsprechend geändert. – user657267