makefile 配方的构建时间
Posted
技术标签:
【中文标题】makefile 配方的构建时间【英文标题】:Build time for makefile recipe 【发布时间】:2016-08-24 09:41:26 【问题描述】:我想计算 makefile 中每个配方花费的时间
SYS_TIME = $(shell date)
SUBDIRS = a b c d
.PHONY = default
default:
for dir in $(SUBDIRS); \
do \
$(eval ST = $(SYS_TIME)) \
$(MAKE) -C FOLD=$$dir; \
$(eval ET = $(SYS_TIME))
echo "time spent = $(ST) - $(ET) "
done; \
结果应该是这样的:
花费时间 = 1:35
花费时间 = 2:23
花费时间 = 10:59
花费时间 = 5:35
第一个表示 1 分 35 秒,其他表示相同
或 $(shell date)
的其他替代方法【问题讨论】:
请向我们展示您的作品。还以一个简单的 makefile 为例,指定一个调试构建选项和一个发布构建选项。运行调试构建和之后的发布可能会使发布构建看起来运行得非常快。一个配方可以影响其他配方的构建时间。 旁注:***.com/q/6966877/4153464 这可能就是您要找的。它不会解释您的 makefile,但它可能足够接近 @Work of Artiz 在这种情况下我只有一个食谱。我没有得到的其他构建内容,您可以详细说明一下吗? 重要要知道:Make 将扩展整个配方(存储为单个递归扩展变量)作为制定的第一步将什么传递给外壳。然后它一个接一个地运行扩展的每一行,每一行都在一个单独的 shell 调用中。这样做的结果是你的两个$(eval...)
s 都将在扩展时运行,在 shell 开始做任何事情之前。
【参考方案1】:
只需在命令行前加上time
,例如:time $(MAKE) -C $$dir
。
【讨论】:
稍后我会将花费的时间重定向到文件 你能推荐一些替代 A := $(shell date)以上是关于makefile 配方的构建时间的主要内容,如果未能解决你的问题,请参考以下文章
从同一 Makefile 中的配方更改 make 变量并调用另一个规则?