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

Ale*_*ing 4 autotools gcov lcov

我已经成功建立了一个autotools项目,其中测试用仪器编译,这样我就可以获得测试覆盖率报告.

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

我现在面临的问题是我想自动完成这一步骤.我想将此添加到'make check'或将其作为单独的目标'make check-coverage'.理想情况下,我想解析结果,如果覆盖率低于某个百分比则会失败.问题是我根本无法弄清楚如何添加自定义目标.

我得到的最接近的是找到这个示例autotools配置,但我无法看到该项目中的目标'make lcov'被添加.我只能在m4/auxdevel.m4中看到一些配置标志.

有小费吗?

Ale*_*ing 6

你可以在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    
Run Code Online (Sandbox Code Playgroud)

正在检查的'@make cov'会将'cov'目标添加到默认的'make check'目标.