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

Windows GNU Make-如何添加时间戳输出(对makefile的修改最少),windows,makefile,gnu-make,Windows,Makefile,Gnu Make,我想更好地了解构建作业指标,但不幸的是,make本身并没有输出时间戳 如果我运行make--print database,对于给定的目标,它会输出一行 # Last modified 2016-08-15 13:53:16 但这并没有给我持续的时间 问题 有没有一种方法可以在不修改每个目标的情况下获得构建目标的持续时间?有些目标位于生成文件中,生成文件是在构建过程中生成的,因此无法修改它们的配方 可能的解决方案 我可以通过这种方式创建并输出一个时间戳 考虑到这是并行的make,这是个好主意吗

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

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

#  Last modified 2016-08-15 13:53:16
但这并没有给我持续的时间

问题

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

可能的解决方案

我可以通过这种方式创建并输出一个时间戳


考虑到这是并行的
make
,这是个好主意吗?显然,为每个目标调用前和后配方会增加构建时间,但我对此没有意见。

如果这是一个并行生成,那么“前操作”、“操作”和“后操作”可能是交错的。也就是说,您可能会得到如下输出:

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与规则C到J共享处理器


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

SHELL
可以重新定义为递归扩展变量,因此
SHELL=my script$@
可以作为传递目标名称的干净方法。另外,将
.SHELLFLAGS
设置为空可能是个好主意。如果您感到无聊,我会