我有一个这样的生成文件:
default:
%:
@$(MAKE) -i -C subdir1 $*
@$(MAKE) -i -C subdir2 $*
@$(MAKE) -i -C subdir3 $*
@$(MAKE) -i -C subdir4 $*
@$(MAKE) -i -C subdir5 $*
基本概念是我有 5 个(或更多)子项目,我将按顺序调用它们。我使用“-i”标志以便 make 可以继续执行到最后,并使用“-C dir”标志在子目录中调用 make。
所以,假设子项目 2 和 5 失败了,那么最后我希望能够打印如下内容:
3 projects built ok, 2 projects have errors.
所以我想我想要某种计数器,但我不知道如何在出现错误时设置/增加它。有什么想法吗?
最佳答案
因为每次调用 $(MAKE)
都会产生自己的子进程,所以我想不出一种方法可以用普通的 make 变量轻松记录这些数字。但是,您可以将每次调用的返回值记录到一个(可能是隐藏的)文件中,然后 grep
获取您的构建统计信息,如下所示:
errLog = .errLog
default:
%:
@$(MAKE) -i -C subdir1 $*; echo $$? > $(errLog)
@$(MAKE) -i -C subdir2 $*; echo $$? >> $(errLog)
@$(MAKE) -i -C subdir3 $*; echo $$? >> $(errLog)
@$(MAKE) -i -C subdir4 $*; echo $$? >> $(errLog)
@$(MAKE) -i -C subdir5 $*; echo $$? >> $(errLog)
@echo "`grep -c '^0' $(errLog)` built ok, `grep -c '^[^0]' $(errLog)` have errors."
请注意,第一个输出重定向必须是单个 >
以覆盖文件中以前的返回码,而所有其他输出重定向应该是两个 >
以不覆盖文件内容.
关于linux - 在末尾添加摘要的问题/失败数量的计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51356353/