Я хочу получить информацию о покрытии из моих тестов googletest, но у меня проблемы с поиском хороших инструкций.Компиляция googletest для gcov
Предполагаю, что я должен скомпилировать мой битовый файл gtest таким образом, чтобы он выплескивал файлы .gcno
и .gcna
. Однако никакая комбинация флагов компилятора, похоже, не может произойти.
Я пробовал использовать --coverage
и -fprofile-arcs -ftest-coverage
, как на сборнике, так и на компоновке, но безрезультатно.
Я просто ошибаюсь во всем подходе? Будут ли тесты googletest когда-либо компилироваться так?
Для полноты здесь есть вся Makefile:
# -*- indent-tabs-mode:t; -*-
## Vars
CXX=g++
BDDOBJ=../obj
OBDD_DIR=../src
OBDD_INCLUDE=-I$(OBDD_DIR)
#FLAGS=-Wfatal-errors -I./gtest-1.7.0/include -L./gtest-1.7.0/lib/.libs -lgtest -lgtest_main -lpthread
GTEST_DIR=./gtest-1.7.0
SRCDIR=./src
OBJDIR=./obj
BINDIR=./bin
LIBDIR=./lib
VPATH=$(SRCDIR) $(OBJDIR) $(LIBDIR) $(BINDIR)
COVERAGE=-O0 -g --coverage
MKDIR=mkdir -p
RM=rm -rf
.PHONY: clean
.INTERMEDIATE: default $(BINDIR) $(OBJDIR) $(LIBDIR)
default: obddtest
#Binary
obddtest: $(BINDIR) libgtest.a Vertex.o Vertex_unittest.o Edge.o Edge_unittest.o Graph.o Graph_unittest.o main.o
g++ $(COVERAGE) -isystem ${GTEST_DIR}/include $(OBDD_INCLUDE) -pthread \
$(OBJDIR)/Vertex.o \
$(OBJDIR)/Vertex_unittest.o \
$(OBJDIR)/Graph_unittest.o \
$(OBJDIR)/Edge.o \
$(OBJDIR)/Edge_unittest.o \
$(OBJDIR)/Graph.o \
$(OBJDIR)/main.o \
$(LIBDIR)/libgtest.a \
-o $(BINDIR)/obddtest
## Main
main.o: main.cc
g++ $(COVERAGE) -isystem ${GTEST_DIR}/include $(OBDD_INCLUDE) -pthread -c $< -o $(OBJDIR)/[email protected]
## gtest library
gtest-all.o: $(OBJDIR)
g++ $(COVERAGE) -isystem ${GTEST_DIR}/include -I${GTEST_DIR} -pthread -c ${GTEST_DIR}/src/gtest-all.cc -o $(OBJDIR)/gtest-all.o
libgtest.a: $(LIBDIR) gtest-all.o
ar -rv $(LIBDIR)/libgtest.a $(OBJDIR)/gtest-all.o
## Source under test
%.o: $(OBDD_DIR)/%.cpp $(OBJDIR)
g++ $(COVERAGE) -fPIC -O0 $(OBDD_INCLUDE) -c $< -o $(OBJDIR)/[email protected]
## Tests
%_unittest.o: %_unittest.cc $(OBJDIR)
g++ $(COVERAGE) -isystem ${GTEST_DIR}/include $(OBDD_INCLUDE) -pthread -DTESTDATA=\"$(CURDIR)/data/\" -c $< -o $(OBJDIR)/[email protected]
## Housekeeping
$(LIBDIR):
$(MKDIR) $(LIBDIR)
$(OBJDIR):
$(MKDIR) $(OBJDIR)
$(BINDIR):
$(MKDIR) $(BINDIR)
clean:
$(RM) $(LIBDIR) $(OBJDIR) $(BINDIR)
Добавить CFLAGS = -fprofile-arcs -ftest-coverage. или однажды попробуйте файл с одним источником, например 'g ++ -fprofile-arcs -ftest-coverage unittest.cc -o unittest.o'. После компиляции проверьте наличие .gcno файлов presenet. –
@jsj Вы еще нашли ответы? – user2148571