【问题标题】:Genetate GCOV report for multiple cpp files为多个 cpp 文件生成 GCOV 报告
【发布时间】:2023-09-18 08:28:01
【问题描述】:

我在一个文件夹中有 3 个文件。 one.cppone.hppmain.cppone.hpp 有一个类声明。 one.cpp 在同一命名空间下的类中定义了函数。我从 main 中的类调用函数,并在 main 中包含 one.hpp。如何使用 gcov 编译和运行所有这些文件以生成覆盖率?

我尝试生成单独的目标文件并创建一个可执行文件。没有工作

【问题讨论】:

  • 构建程序的最简单方法是g++ -I. main.cpp one.cpp。这会将生成的程序命名为a.out,但您可以通过-o 选项指定不同的名称。我忘记了启用 gcov 工具需要添加哪些选项——在手册中查找。
  • 如果您在编译器中启用代码覆盖,它将自动为每个目标文件生成 gcno 文件。如果您运行使用代码覆盖率编译的可执行文件,它将在执行期间生成 gcda 文件(匹配 gcdo 文件)。 gcda + gcno 将用于生成您的报告。您实际上不会检查源文件,而是检查目标文件。
  • Johns 的建议适用于一些 gcov 特定的修改。

标签: c++ gcov gcovr


【解决方案1】:

按照 John 的建议使用 g++ -I. main.cpp one.cpp 编译代码。编译和执行后获取覆盖对象修改为g++ --coverage -I. main.cpp one.cpp的行。它生成a.out和需要.gcna.gcda文件。根据我的需要生成覆盖报告。谢谢你的帮助。

【讨论】: