使用-j选项执行非递归GNU make时如何对输出进行分组

时间:2015-10-02 21:31:05

标签: gnu-make

我们已经创建并正在使用自定义的非递归GNU make构建系统。

因此它非常快(预期),但是在使用-j选项构建所有依赖项时,标准输出会混乱。我们尝试使用--output-sync选项来尝试序列化输出,但它仍然无法完全按照预期工作。

示例:

all: foo foo2
foo: bar bar2 bar3
    @echo foo
bar:
    @echo bar
bar2:
    @echo bar2
bar3:
    @echo bar3

foo2: bar4 bar5 bar6
    @echo foo2
bar4:
    @echo bar4
bar5:
    @echo bar5
bar6:
    @echo bar6

当我没有-j运行时,我得到顺序输出:

  

bar
bar2
bar3
foo
bar4
bar5
bar6
foo2

当我使用-j运行时,我得到:

  

make -j

bar
bar2
bar4
bar6
bar3
bar5
foo
foo2

尝试修复我们在make 4.0中使用output-sync尝试的问题

  

make -j -Otarget

bar
bar2
bar5
bar3
bar6
bar4
foo
foo2

有没有办法强制make对食谱进行分组,所以即使我们使用-j选项,输出也是:

bar
bar2
bar3
foo
bar4
bar5
bar6
foo2

更新:顺便说一下,每次运行make时,使用-j的输出确实是随机的,这些示例只是一次特定运行的输出。

1 个答案:

答案 0 :(得分:0)

正如@MadScientist 评论的那样,不可能做我希望做的事情。