将GCOV与Bjam集成

时间:2015-04-16 12:47:59

标签: unit-testing boost gcov bjam lcov

我正在创建boost单元测试用例,我需要获得相同的代码覆盖率。我打算使用GCOV和LCOV来获取代码覆盖率。 有人可以帮助我在Jamfile中获取GCOV和LCOV与bjam集成的配置吗?

2 个答案:

答案 0 :(得分:2)

执行此操作的一种好方法是定义一个单独的变体(类似于调试和发布变体)。

这将基于“调试”变体创建一个新的“覆盖”变体,并带有其他覆盖选项:

variant coverage : debug : <cxxflags>"-fprofile-arcs -ftest-coverage"
                           <linkflags>"-lgcov" ;

变体方法的优点是覆盖构建将转到单独的目录结构。否则,使用和不使用coverage选项编译的文件将最终位于相同的目录中,这将导致链接错误。那些通常必须用bjam -a来解决,这有效但在覆盖和调试之间切换时需要完全重建,这对于变体方法是不必要的。

要触发覆盖构建,请使用:

bjam variant=coverage

答案 1 :(得分:1)

试试这个。 根据您的要求进行编辑。

单元测试MyTest:MyTest.cpp库: - std = gnu ++ 0x --profile-arcs --test-coverage --coverage -lgcov shared:gcov;