【发布时间】:2023-09-18 08:28:01
【问题描述】:
我在一个文件夹中有 3 个文件。 one.cpp、one.hpp 和 main.cpp。 one.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 特定的修改。