【问题标题】:gcov, make, cmake, ctest coverage buildgcov、make、cmake、ctest 覆盖构建
【发布时间】:2015-07-06 23:24:28
【问题描述】:

我有一个项目,它由我的项目和多个外部项目组成,它们是一栋建筑,因为我正在使用其他项目。它的结构如下:

external
 - subproj1
 - subproj2
another_external_project
myproject
 - src
 - tests

我正在构建它,首先运行“cmake”来配置它并查找是否满足所有依赖项,然后“make”来编译它。使用“ctest”运行测试。 问题是我只需要覆盖我的 myproject/src 目录。

我尝试生成的 gcda 文件:

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

问题是: 1)我应该在哪一步添加覆盖标志?在配置?还是在“制作”? 2)如果是这样,我是否应该将该标志添加到 ctest CMakelist 中?

【问题讨论】:

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


【解决方案1】:

好的,找到答案了。

问题是在使用 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'

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

【讨论】:

猜你喜欢
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
相关资源
最近更新 更多