2010-05-20 56 views
4

我已经成功地建立了一个autotools项目,其中的测试用测试编译,所以我可以得到测试覆盖率报告。'make check'后自动工具自动调用lcov

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

我现在面临的问题是我想自动执行此步骤。我想补充一句,“做检查”或使其成为一个单独的目标“检查覆盖”。理想情况下,如果覆盖率低于一定百分比,我想解析结果并失败。问题是,我无法弄清楚如何添加自定义目标。

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

任何提示?

回答

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  

的 '@make COV' 检查将在 'COV' 目标添加到默认下, '让检查' 的目标。