gcov是linux下进行代码覆盖测试的工具,随着gcc一起发布。
lcov是gcov的图形化前端工具,根据gcov生成的内容,处理成一颗完整的html树,包括概述、覆盖率百分百、图标等轻便直观的内容。
在根CMakeList.txt中添加ENABLE_GCOV选项:
OPTION(ENABLE_GCOV "Enable gcov (debug, Linux builds only)" OFF)
IF (ENABLE_GCOV AND NOT WIN32 AND NOT APPLE)
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage -lgcov")
ENDIF()
cmake编译时记得加选项:
cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_GCOV=1 ..
编译后就可以看到图文件 *.gcno(.gcno是由-ftest-coverage产生的,它包含了重建基本块图和相应的块的源码的行号的信息)