Autotools在 'make check'之后自动调用lcov

标签 autotools gcov lcov

我已经成功建立了一个自动工具项目,其中的测试使用仪器进行编译,这样我就可以获得测试覆盖率报告。

成功“make check”后,我可以通过在源目录中运行 lcov 来获取报告。

我现在面临的问题是我想自动化此步骤。我想将其添加到“进行检查”或使其成为一个单独的目标“进行检查覆盖范围”。理想情况下,我想解析结果,如果覆盖率低于一定百分比,则失败。问题是我根本不知道如何添加自定义目标。

我得到的最接近的是找到 this示例 autotools 配置,但我看不到在该项目中的何处添加了目标“make lcov”。我只能在 m4/auxdevel.m4 中看到一些配置标志。

有什么建议吗?

最佳答案

显然,您可以在 Makefile.am 中向目标添加额外的步骤,这就是我最终得到的结果(受到#http://www.enlightenment.org/svn/e/trunk/ewl/Makefile.am 的启发):

#http://www.enlightenment.org/svn/e/trunk/ewl/Makefile.am
if ENABLE_COV
cov-reset:
    @rm -fr coverage
    @find . -name "*.gcda" -exec rm {} \;
    @lcov --directory . --zerocounters

cov-report:
    @mkdir -p coverage
    @lcov --compat-libtool --directory . --capture --output-file coverage/app.info  
    @genhtml -o coverage/ coverage/app.info 

cov:
    @make cov-report

clean-local:
    @make cov-reset 

check:
    @make cov

endif    

检查中的“@make cov”会将“cov”目标添加到默认的“make check”目标。

关于Autotools在 'make check'之后自动调用lcov,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2872164/

相关文章:

linux - 如何使用自动工具获得 pretty-print 件

c++ - gcov 检测共享对象引用 __gcov_init 隐藏符号

gcov - lcov 用于包含 gcda 文件的多个目录

c - Autoconf 检查 struct flock

c - 检索使用 autotool 生成的 lib 版本

git - 使用 git 和 autotools 进行分发

c++ - CMake Gcov c++ 创建错误的 .gcno 文件

c - 如何使用 gcov 进行测试覆盖率(使用 perl 脚本测试 C 程序)?

c++ - 我如何告诉 lcov 在哪里可以找到我的 .cpp 和 .h 文件?

code-coverage - 有没有一种方法可以将lcov代码覆盖率报告仅集中到一个或两个目录?