Google测试中的项目Makefile问题

Google测试中的项目Makefile问题,makefile,googletest,Makefile,Googletest,就我个人而言,我不知道如何删除以下makefile中的mv语句 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 \

就我个人而言,我不知道如何删除以下makefile中的mv语句

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) $@ $^ 

$(OBJ_DIR)/gtest_main.a : $(OBJ_DIR)/gtest-all.o $(OBJ_DIR)/gtest_main.o
    $(AR) $(ARFLAGS) $@ $^

$(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 $@
TEST_DIR=../gtest
用户目录=src
TESTS\u DIR=测试
OBJ_DIR=OBJ
CPPFLAGS+=-isystem$(GTEST\u DIR)/include-I$(USER\u DIR)
CXXFLAGS+=-g-墙-Wextra
测试=测试
GTEST_头=$(GTEST_DIR)/include/GTEST/*.h\
$(GTEST_DIR)/include/GTEST/internal/*.h
全部:$(测试)
清洁:
rm-rf obj
rm-rf箱
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
中压gtest_干管o obj/gtest_干管o
$(OBJ_DIR)/gtest.a:$(OBJ_DIR)/gtest all.o
$(AR)$(ARFLAGS)$@$^
$(OBJ_DIR)/gtest_main.a:$(OBJ_DIR)/gtest all.o$(OBJ_DIR)/gtest_main.o
$(AR)$(ARFLAGS)$@$^
$(OBJ_DIR)/addition.o:$(USER_DIR)/addition.cpp$(USER_DIR)/addition.h$(GTEST_头)
$(CXX)$(CPPFLAGS)$(CXXFLAGS)-c$<
中压附加装置o obj/附加装置o
$(OBJ_DIR)/test.o:$(TESTS_DIR)/test.cpp$(USER_DIR)/addition.h$(GTEST_头)
$(CXX)$(CPPFLAGS)$(CXXFLAGS)-c$(TESTS\u DIR)/test.cpp
中压试验o obj/试验o
test:$(OBJ_DIR)/addition.o$(OBJ_DIR)/test.o$(OBJ_DIR)/gtest_main.a
$(CXX)$(CPPFLAGS)$(CXXFLAGS)-lpthread$^-o$@
问题是mv test.o obj/test.o线路和其他类似线路。我知道有一种方法可以让你自动完成这项任务,但就我的一生而言,我无法找到/找到它

这是google测试附带的预先准备好的makefile,我已经对它进行了修改,以便为我工作。

类似于

CPPFLAGS += -MMD -MP

gtest_objs := $(OBJ_DIR)/gtest_all.o $(OBJ_DIR)/gtest_main.o
my_objs    := $(OBJ_DIR)/addition.o $(OBJ_DIR)/test.o
all_objs   := $(gtest_objs) $(objs)

deps       := $(all_objs:.o=.d)

$(gtest_objs): CPPFLAGS += -I$(GTEST_DIR)
$(gtest_objs): $(OBJ_DIR)/gtest_%.o: $(GTEST_DIR)/src/gtest_%.cc
$(my_objs): $(OBJ_DIR)/%.o: $(USER_DIR)/%.cpp
$(all_objs):
    $(COMPILE.cpp) $(OUTPUT_OPTION) $<

-include $(deps)
CPPFLAGS+=-MMD-MP
gtest_objs:=$(OBJ_DIR)/gtest_all.o$(OBJ_DIR)/gtest_main.o
my_objs:=$(OBJ_DIR)/addition.o$(OBJ_DIR)/test.o
所有对象:=$(gtest\U对象)$(对象)
部门:=$(所有对象:.o=.d)
$(gtest_objs):CPPFLAGS+=-I$(gtest_DIR)
$(gtest_objs):$(OBJ_DIR)/gtest_%.o:$(gtest_DIR)/src/gtest_%.cc
$(我的对象):$(对象目录)/%.o:$(用户目录)/%.cpp
$(所有对象):
$(COMPILE.cpp)$(输出选项)$<
-包括美元(deps)
all_objs
的规则是从内置规则复制的,与
deps
相关的内容将自动为您生成依赖项。

类似

CPPFLAGS += -MMD -MP

gtest_objs := $(OBJ_DIR)/gtest_all.o $(OBJ_DIR)/gtest_main.o
my_objs    := $(OBJ_DIR)/addition.o $(OBJ_DIR)/test.o
all_objs   := $(gtest_objs) $(objs)

deps       := $(all_objs:.o=.d)

$(gtest_objs): CPPFLAGS += -I$(GTEST_DIR)
$(gtest_objs): $(OBJ_DIR)/gtest_%.o: $(GTEST_DIR)/src/gtest_%.cc
$(my_objs): $(OBJ_DIR)/%.o: $(USER_DIR)/%.cpp
$(all_objs):
    $(COMPILE.cpp) $(OUTPUT_OPTION) $<

-include $(deps)
CPPFLAGS+=-MMD-MP
gtest_objs:=$(OBJ_DIR)/gtest_all.o$(OBJ_DIR)/gtest_main.o
my_objs:=$(OBJ_DIR)/addition.o$(OBJ_DIR)/test.o
所有对象:=$(gtest\U对象)$(对象)
部门:=$(所有对象:.o=.d)
$(gtest_objs):CPPFLAGS+=-I$(gtest_DIR)
$(gtest_objs):$(OBJ_DIR)/gtest_%.o:$(gtest_DIR)/src/gtest_%.cc
$(我的对象):$(对象目录)/%.o:$(用户目录)/%.cpp
$(所有对象):
$(COMPILE.cpp)$(输出选项)$<
-包括美元(deps)

all_objs
的规则是从内置规则复制的,与
deps
相关的内容将自动为您生成依赖项。

对不起,我想我不明白。我用您提供的代码替换了生成文件中GTEST_标题下的所有内容。我得到一个错误:目标'obj/gtest all.o'与目标不匹配pattern@JAndrewMcCormick我只是注意到现在文件名不同,将
gtest all.cc
更改为
gtest_all.cc
,我相应地更改了makefile。对不起,我想我不明白。我用您提供的代码替换了生成文件中GTEST_标题下的所有内容。我得到一个错误:目标'obj/gtest all.o'与目标不匹配pattern@JAndrewMcCormick我只注意到现在文件名不同,将
gtest all.cc
更改为
gtest_all.cc
,我相应地更改了makefile。