0

我正在尝试在我的 linux 项目上使用gcovr,并且在执行二进制文件后无法获得动态库的 .gcda 文件。

我有一个名为projectA的项目,它创建了一个名为libprojectA.so的库,并且单元测试项目链接libprojectA.so。这里的主要目标是我想查看从单元测试二进制文件UnitTestExecutable调用的 projectA 函数的代码覆盖率。

我有这样一个目录结构: 项目结构

这是我调用gcovr的步骤。

  1. 使用其 Makefile 构建 projectA

    • Makefile 有“-fprofile-arcs -ftest-coverage -fPIC”
    • 在 .build 目录中创建 .o 和 .gcno
    • 创建动态库 libprojectA.so
  2. 构建单元测试

    • Makefile 链接 libprojectA.so
    • Makefile 有“-fprofile-arcs -ftest-coverage -fPIC”
    • 创建 .o 和 .gcno
    • 创建二进制 UnitTestExecutable
  3. 执行 UnitTestExecutable

    • 在 /unittest/*.gcda 中创建 .gcda 文件
    • 它不会在 /porjectA/ 文件夹中创建 *.gcda <== 这是问题所在
  4. 调用 gcovr gcovr -v -r /projectA/ --html --html-details -o test-html-details.html --object-directory=/projectA/.build/

    在这里它抱怨它在 /projectA/.build/ 中找不到 *.gcda

有人可以帮忙吗?

谢谢,

4

0 回答 0