gcov,make,cmake,ctest cover build

时间:2015-04-28 08:10:52

标签: c++ cmake makefile code-coverage gcov

我有一个项目,包括我的项目和多个外部项目,这是一个建筑物,因为我正在使用其他项目。它的结构如下:

external
 - subproj1
 - subproj2
another_external_project
myproject
 - src
 - tests

我首先建立它" cmake"配置它并查找是否满足所有依赖关系然后" make"编译它。测试使用" ctest"进行。 问题是我只需要覆盖myproject / src目录。

我试图生成gcda文件:

  • 添加CPP_FLAGS" -coverage"制作,但我只看到一些文件,我的项目中没有人需要的覆盖文件
  • 将覆盖标志添加到CMakelist,但仍然相同

问题是: 1)我应该添加覆盖标志的步骤是什么?在配置?或者在" make"? 2)如果是这样,我应该将这些标志添加到ctest CMakelist吗?

1 个答案:

答案 0 :(得分:0)

好的,找到了答案。

当使用cmake进行配置时,我应该将其传递为:

cmake -D"CMAKE_CXX_FLAGS=-g -O2 -w -fprofile-arcs -ftest-coverage" -D"CMAKE_C_FLAGS=-g -O2 -w -fprofile-arcs -ftest-coverage"

然后用make构建应用程序,我应该传递其他变量但是使用相同的标志:

make -j`cat /proc/cpuinfo | grep processor | wc -l` CFLAGS='-g -O2 -w -fprofile-arcs -ftest-coverage' CXXFLAGS='-g -O2 -w -fprofile-arcs -ftest-coverage'

之后我运行测试并生成报告。