linux - 在末尾添加摘要的问题/失败数量的计数器

标签 linux gcc makefile gnu

我有一个这样的生成文件:

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/

相关文章:

linux - Jamfile - "Unknow rule"- 如何读取它

linux - 两个进程中两个相同的虚拟地址如何映射到不同的物理地址?

c++ - 如何在没有 operator=() 的情况下为 const 成员 push_back?

windows - Cygwin-x64 上的 "CPU you selected does not support x86-64 instruction set"错误

shell - Makefiles : how to get a file name for a rule target from outside, 以可移植的方式

c++ - 如何隐藏来自外部库的编译警告

linux - Python 中的文件共享

linux - grep 命令处理的文件的百分比或数量

c - 为什么 gcc 报告 "implicit declaration of function ‘round’"?

linux - 配置使用gtk1.2的程序