控制makefile的输出

时间:2013-11-04 13:38:54

标签: c makefile

我正在尝试编写一个makefile来替换用于构建相当大的应用程序的一个脚本。

当前脚本一次编译一个文件,使用make的主要原因是并行化构建过程。使用make -j 16我目前在办公室服务器上获得了4倍的加速。

但我失去的是输出的一些可读性。文件的编译程序捆绑了一些工作,包括运行自定义预编译器和运行gcc命令。这些步骤中的每一步都输出一些信息,我希望它能缓冲命令的输出,然后一次性显示整个批次。

是否可以让make这样做?

3 个答案:

答案 0 :(得分:3)

如果你升级到GNU make 4.0,那么你可以使用内置的输出同步功能来获得你想要的东西。

如果您不想升级,那么您必须修改每个配方,以便用管理输出的小程序进行包装。或者您可以将SHELL变量设置为适合您的变量。搜索互联网应该给你一些例子。

答案 1 :(得分:1)

实现此目的的一种简单方法是将所有日志输出a发送到日志目录,每个文件都名为:

log_file_20131104_12013478_b.txt  // log_file_<date>_<time>_<sequence letter>.txt

然后简单地cat将它们作为依赖链中的最后一个make作业:

cat log_dir/log_file_20131104_12013478_*.txt > log_file_20131104_12013478.txt

答案 2 :(得分:0)

使用makepp这是您使用-j时的默认行为。收集所有单独的输出(以及输入dir消息),并在命令终止时一起输出。