在CMake中配置GCOV对C++项目代码进行分析
作者:互联网
问题描述
如何在CMakeLists.txt中配置gcov来生成代码分析报告?
解决办法
第一步:下载gcov的cmake包
并将该cmake包放在项目根目录下新创建的CMakeModules文件夹下面。此时,项目代码的结构如下所示(举例):
- Your_Project_dir
- main.cc
- CMakeLists.txt
- include
- xxx.h
- src
- xxx.cc
- CMakeModules
- CodeCoverage.cmake
第二步:配置你的CMakeLists.txt
在添加gcov相关配置之前,你的CMakeLists.txt应该类似这个样子:
cmake_minimum_required(VERSION 2.8)
project(your_project)
# 请确保你的C++编译器为GNUCXX
# Clang不支持gcov
include_directories(include)
aux_source_directory(src SRC_DIR)
add_executable(${PROJECT_NAME} main.cc ${SRC_DIR})
此时,在CMakeLists.txt文件尾部添加:
# 将我们下载好的gcov对应的cmake包引入项目中
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules)
# if判断语句是为了确保编译器是GNUCXX(即g++)以支持gcov功能
if(CMAKE_COMPILER_IS_GNUCXX)
# 引入CodeCoverage功能
include(CodeCoverage)
# 我的理解是:
# NAME后指定加入gcov功能的可执行文件名
# EXECUTABLE后指定原始可执行文件(也就是要进行分析的那个可执行文件)名字
# DEPENDENCIES也是原始可执行文件名字
setup_target_for_coverage_lcov(NAME ${PROJECT_NAME}_coverage EXECUTABLE ${PROJECT_NAME} DEPENDENCIES ${PROJECT_NAME})
endif()
构建项目编译
在项目的根目录新建build目录然后在build目录中构建项目:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
make
make ${PROJECT_NAME}_coverage
其中:
make
是生成原始项目可执行文件make ${PROJECT_NAME}_coverage
是生成可执行文件执行时的代码分析文档,也就是说运行这个命令会直接运行可执行文件然后生成代码分析的html报告在项目根目录中。
参考
https://stackoverflow.com/questions/13116488/detailed-guide-on-using-gcov-with-cmake-cdash#
https://jhbell.com/using-cmake-and-gcov
标签:可执行文件,CMakeLists,cmake,NAME,C++,PROJECT,GCOV,CMake,gcov 来源: https://blog.csdn.net/yjj546542806/article/details/111568642