gcov,make,cmake,ctest覆盖构建

gcov, make, cmake, ctest coverage build

本文关键字:覆盖 构建 ctest cmake make gcov      更新时间:2023-10-16

我有一个项目,它由我的项目和多个外部项目组成,这些项目是一个建筑,就像我的项目正在使用其他项目一样。它的结构看起来像:

external
- subproj1
- subproj2
another_external_project
myproject
- src
- tests

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

我尝试生成的gcda文件:

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

问题如下:1) 我应该在哪一步添加覆盖范围标志?在配置?还是在"make"?2) 如果是,我是否应该将这些标志添加到ctest CMakelist?

好的,找到了答案。

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

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