我们已经创建并正在使用自定义的非递归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的输出确实是随机的,这些示例只是一次特定运行的输出。
答案 0 :(得分:0)
正如@MadScientist 评论的那样,不可能做我希望做的事情。