我正在尝试在我的 linux 项目上使用gcovr,并且在执行二进制文件后无法获得动态库的 .gcda 文件。
我有一个名为projectA的项目,它创建了一个名为libprojectA.so的库,并且单元测试项目链接libprojectA.so。这里的主要目标是我想查看从单元测试二进制文件UnitTestExecutable调用的 projectA 函数的代码覆盖率。
我有这样一个目录结构: 项目结构
这是我调用gcovr的步骤。
使用其 Makefile 构建 projectA
- Makefile 有“-fprofile-arcs -ftest-coverage -fPIC”
- 在 .build 目录中创建 .o 和 .gcno
- 创建动态库 libprojectA.so
构建单元测试
- Makefile 链接 libprojectA.so
- Makefile 有“-fprofile-arcs -ftest-coverage -fPIC”
- 创建 .o 和 .gcno
- 创建二进制 UnitTestExecutable
执行 UnitTestExecutable
- 在 /unittest/*.gcda 中创建 .gcda 文件
- 它不会在 /porjectA/ 文件夹中创建 *.gcda <== 这是问题所在
调用 gcovr gcovr -v -r /projectA/ --html --html-details -o test-html-details.html --object-directory=/projectA/.build/
在这里它抱怨它在 /projectA/.build/ 中找不到 *.gcda
有人可以帮忙吗?
谢谢,