GNU Make - 如何添加时间戳输出(使用最少的makefile修改)

时间:2016-08-22 15:07:53

标签: windows makefile gnu-make

我希望更好地了解我的构建工作指标,但不幸的是,make本身并没有输出时间戳。

如果我运行make --print-data-base,对于给定目标,它会输出一行

#  Last modified 2016-08-15 13:53:16

但这并没有给我持续时间。

问题

有没有办法在不修改每个目标的情况下获得构建目标的持续时间?有些目标是在构建期间生成的makefile,因此无法修改其配方。

可能的解决方案

我可以implement a pre- and post-recipe for every target并以这种方式输出时间戳。

这是一个好主意,因为这是并行make?显然,为每个目标调用前后配方会增加构建时间,但我可以做得很好。

1 个答案:

答案 0 :(得分:2)

如果这是一个平行的make,那么" preactions"," actions"和" postactions"可以是交错的。也就是说,您可能得到如下输出:

Pre-action 12:03:05
Pre-action 12:03:06
building foo...
building bar...
Post-action 12:04:17
Post-action 12:04:51

因此,您应该将TARGETNAME变量传递给操作前和操作后脚本。

此外,当您并行运行时,开始和结束时间并不是所有关于操作需要多长时间的知识;规则A可能需要更长的时间,因为规则B单独运行,而规则A与规则C到J共享处理器。

除此之外,我认为这种方法没有问题。