我有一个makefile,我用-j switch调用它来启用并行执行。每个目标在实际作业运行之前打印出一点“运行此目标”消息。大多数时候控制台输出看起来不错。我看到打印件的顺序正确并且在控制台的左侧对齐,如下所示:
Running target1
Running target2
Running target3
但是当一个或多个目标失败时,屏幕输出会被空格倾斜/偏移,如下所示:
Running target1
Running target2
Running target3
make: *** [target3] Error
一旦开始倾斜,无论目标成功还是失败,每次下一次打印都会倾斜。
这真的很烦人,特别是因为我不明白原因。为什么会出现这种倾斜?如何防止这种情况发生呢?
答案 0 :(得分:0)
Carpetsmoker指出,这种倾斜是因为多个进程同时写入stderr / stdout。
make(我猜测版本4.0或更高版本)提供了一个同步输出( - output-sync或-O)与不同粒度级别的选项。这个选项完全符合我的要求!
https://www.gnu.org/software/make/manual/html_node/Options-Summary.html