我有一个使用make
构建的大型项目。由于项目的大小和依赖关系的组织方式,使用make -j
并行构建是一个真正的好处。但是,make -j
生成的输出(即日志和错误消息)都混淆了,因为所有并行任务都同时写入stdout。
如何告诉make
很好地组织输出?理想情况下,我希望它分别缓冲每个任务的日志,然后在完成时按顺序输出。有没有标准的方法呢?
答案 0 :(得分:4)
您可以使用-O
或--output-sync
命令行选项:
-O [type], - output-sync [= type]
当与-j并行运行多个作业时,请确保每个作业的输出一起收集,而不是穿插其他作业的输出。如果未指定type或是target,则将每个目标的整个配方的输出组合在一起。如果type为line,则配方中每个命令行的输出将组合在一起。如果type是recurse,则整个递归make的输出被组合在一起。如果type为none,则禁用输出同步。
online manual有更多信息。
(请注意,您需要GNU Make 4.0才能生效。)