首页 > 解决方案 > GCOV - 在不同文件夹中生成的 gcda 文件

问题描述

文件夹结构 ~/sandbox/dev ~/sandbox/test

  1. 我在 dev 目录中有 main.cpp。我使用 --coverage 标志编译了代码以生成代码覆盖率。现在生成了 a.out 和 main.gcno 文件。

  2. 现在我将 main.cpp、main.gcno 和 a.out 复制到测试目录

  3. 当我从测试目录运行 a.out 时,main.gcda 文件在 dev 文件夹而不是当前工作目录中生成。

似乎路径在二进制/gcno 中是硬编码的。需要进行哪些更改才能在测试目录中生成 gcda 文件?

标签: c++code-coveragegcov

解决方案


默认情况下,.gcda 文件也存储在与目标文件相同的目录中,但-fprofile-dir可以使用 GCC 选项将 .gcda 文件存储在单独的目录中。

https://gcc.gnu.org/onlinedocs/gcc/Gcov-Data-Files.html

GCOV 实用程序中的 -fprofile-dir 标记


推荐阅读