windows - GNU Make - 如何添加时间戳输出(最小化 makefile 修改)

标签 windows makefile gnu-make

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

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

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

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

问题

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

可能的解决方案

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

鉴于这是并行 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 变量传递给操作前和操作后脚本。

此外,当您并行运行事物时,开始和结束时间并不是了解一个 Action 需要多长时间的全部;规则 A 可能比规则 B 花费更长的时间,这仅仅是因为规则 B 单独运行,而规则 A 与规则 C 到 J 共享处理器。

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

关于windows - GNU Make - 如何添加时间戳输出(最小化 makefile 修改),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39083011/

相关文章:

java - 如何让机器保持清醒?

c++ - 在 Makefile 的什么地方放东西(CFLAGS 或 CXXFLAGS)?

c++ - GNU Make - 动态创建的变量名

c++ - 制作 :*** [Lab1] Error 1

c - 编译 GCC Ubuntu : undefined reference to 时出错

linux - 如果编译器选项与以前使用的选项不同,则使目标过时

qt - Qmake:在不引入库的情况下避免不同文件夹中的文件名冲突

windows - 在文件中查找一行并替换下一行

php - 与 nginx 一起使用时,一旦 PHP FCGI 进程在 Windows 上死机,它就会自动重启

c# - 如何使用C#设置指定网卡的linkspeed和duplex模式