有关在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.cmake
的GCC代码覆盖率报告 :将所有*.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 .