生成由单独的测试类调用的C静态库的测试覆盖率

我正在使用QT Creator处理C中的中型项目.

项目结构基本上是这样的

>项目

> A组

>图书馆A1

> B组

>图书馆B1
>图书馆B2
> ……等

>测试

> LibA1_Test
> LibB1_Test
> LibB2_Test
> ……等

这些库由测试项目中的可执行文件进行测试.我已经设法在启用gcov的情况下自行编译测试,并使用lcov生成代码覆盖率报告,但他们显示的覆盖范围是测试用例,而不是我正在测试的实际代码.我也尝试用gcov编译静态库,但是当我对这些库运行测试时,它不会生成任何gcov输出文件.

如何通过链接我的项目库和测试来生成gcov输出文件?我想看看我的单元测试是否有任何差距.

最佳答案 从
ld manual

--whole-archive
For each archive mentioned on the command line after the --whole-archive option, include every object file in the archive
in the link, rather than searching the archive for the required object
files.

因此,使用–whole-archive将静态库链接到测试中,这将导致测试二进制文件具有整个静态库,并为整个代码提供gcov可见性

点赞