如何添加时间戳输出(用最小的makefile修改)



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

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

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

但是没有给出持续时间

是否有一种方法可以在不修改每个目标的情况下获得构建目标的持续时间?有些目标位于构建过程中生成的makefile中,因此无法修改其配方。

可能的解决方案

我可以为每个目标实现一个pre- and - post-recipe,并以这种方式输出时间戳。

这是一个好主意,因为这是平行的make ?显然,这将增加构建时间从调用pre和post-recipe为每个目标,但我觉得很好。

如果这是一个并行制作,那么"preactions", "actions"one_answers"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耗时更长,这仅仅是因为规则B是单独运行的,而规则A通过j与规则C共享处理器。

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

最新更新