有关在CMake / CDash中使用gcov的详细指南?

我正在使用CMake和我的项目,并build立一个连续/夜间build设的cdash服务器。 一切正常,通过设置一个crontab,我们每小时/每晚的构build/testing结果自动上传到我们的cdash服务器。

我的下一步是将testing覆盖率报告添加到构build。 我在这里find这个文档http://www.cmake.org/Wiki/CTest:Coverage,但坦率地说,这有点远离实用指南。

目前我已经添加了所需的标志(而不是-fprofile-arcs -ftest-coverage ,我发现--coverage更好),编译过程生成.gcno文件。 但后来我卡住了。 命令

 make NightlyCoverage 

似乎没有做任何事情。 有谁能告诉我下一步该做什么? 我想要的结果就是在做make NightlyCoverage ,覆盖报告生成并上传到cdash服务器。

我一直在使用https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake成功。;

只要遵循指导原则:将文件添加到我的CMAKE_MODULE_PATH目录,添加

 set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules) if(CMAKE_COMPILER_IS_GNUCXX) include(CodeCoverage) setup_target_for_coverage(${PROJECT_NAME}_coverage ${PROJECT_TEST_NAME} coverage) endif() 

在我的CMakeLists.txt 。 我也手动添加gcov作为我的目标的依赖项:

 if(CMAKE_COMPILER_IS_GNUCXX) target_link_libraries(${PROJECT_TEST_NAME} gcov) endif() 

有了这个,我只是打字

 make my_project_coverage 

我在构build树的coverage目录中得到了html报告。

我有一个丑陋的方法来使用gcovr做一个没有CodeCoverage.cmakeGCC代码覆盖率报告 :将所有*.gcno*.gcda文件移动到项目根目录,然后运行gcovr

 $ cd /path/to/your/project $ mkdir build && cd build && cmake .. $ make && make test $ find . -type f \( -iname \*.gcno -or -iname \*.gcda \) -exec cp {} .. \; $ cd .. $ gcovr -v -r . 
Interesting Posts