Makefile 如何使make-j产生良好的输出?

Makefile 如何使make-j产生良好的输出?,makefile,gnu-make,Makefile,Gnu Make,我有一个使用make构建的大型项目。由于项目的规模和依赖项的组织方式,使用make-j并行构建确实有好处。但是,make-j产生的输出(即日志和错误消息)是混合的,因为所有并行任务都同时写入标准输出 我如何告诉make,以便很好地组织输出?理想情况下,我希望它能够分别缓冲每个任务的日志,然后在日志完成时按顺序输出。是否有任何标准方法可以执行此操作?您可以使用-O或-output sync命令行选项: -O[type],--输出同步[=type] 当与-j并行运行多个作业时,请确保将每个作业的输出

我有一个使用
make
构建的大型项目。由于项目的规模和依赖项的组织方式,使用
make-j
并行构建确实有好处。但是,
make-j
产生的输出(即日志和错误消息)是混合的,因为所有并行任务都同时写入标准输出


我如何告诉
make
,以便很好地组织输出?理想情况下,我希望它能够分别缓冲每个任务的日志,然后在日志完成时按顺序输出。是否有任何标准方法可以执行此操作?

您可以使用
-O
-output sync
命令行选项:

-O[type],--输出同步[=type]

当与-j并行运行多个作业时,请确保将每个作业的输出收集在一起,而不是分散在其他作业的输出中。如果未指定类型或为目标,则将每个目标的整个配方的输出分组在一起。如果type是line,则配方中每个命令行的输出将分组在一起。如果类型为递归,则将整个递归生成的输出分组在一起。如果类型为“无”,则禁用输出同步

网站提供了更多信息


(请注意,您需要使用GNU make 4.0或更高版本才能获得
-O
支持。它在GNU make 3.x中不可用@MadScientist:谢谢!补充我的答案。