将 GCOV 与 Bjam 集成

Integrate GCOV with Bjam

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

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

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

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

这将创建一个新的 "coverage" 变体,该变体基于 "debug" 变体,具有额外的覆盖选项:

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

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

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

bjam variant=coverage