使用 gcov 测试 C++ 程序

Using gcov to test a c++ program

我是第一次使用 gcov 来分析我的程序 (C++) 该程序由三个 类 组成,我使用 Code::Blocks 构建了项目。 当我使用以下命令调用程序时:

C:\Users\XXX\Documents\Test\TreeObjModel\src>gcc -fprofile-arcs -ftest-coverage Tree.cpp

我收到以下错误:

Tree.cpp:1:18: fatal error: Tree.h: No such file or directory compilation terminated

虽然 cpp 文件在目录 "C:\Users\XXX\Documents\Test\TreeObjModel\src\" 中,但头文件在目录 "C:\Users\XXX\Documents\Test\TreeObjModel\include\"

我们是否需要将代码和头文件放在同一目录中?

提前致谢。

您应该使用 -I 标志来指定您的头文件所在的位置。

从你的例子来看,你应该添加-I../include

您至少有两个选项可以指示编译器在哪里可以找到头文件(包括)。

  1. -Ipath_to_includes 作为 gcc 编译器的参数。例如。 -I../include
  2. 当包含在您的程序中时,请指定目录。例如。 #include "../include/foo.h"

我的策略是成功编译我的项目,然后才尝试使用其他一些东西,比如代码覆盖率标志。我这样说是因为你的错误与 gcov 没有任何关系,并且试图在你的程序编译之前检测你的程序以获得代码覆盖率,这会让事情变得更加复杂。一步一个脚印 ;)