【问题标题】:Build time for makefile recipemakefile 配方的构建时间
【发布时间】: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 为例,指定一个调试构建选项和一个发布构建选项。运行调试构建和之后的发布可能会使发布构建看起来运行得非常快。一个配方可以影响其他配方的构建时间。
  • 旁注:stackoverflow.com/q/6966877/4153464 这可能就是您要找的。它不会解释您的 makefile,但它可能足够接近
  • @Work of Artiz 在这种情况下我只有一个食谱。我没有得到的其他构建内容,您可以详细说明一下吗?
  • 重要要知道:Make 将扩展整个配方(存储为单个递归扩展变量)作为制定的第一步将什么传递给外壳。然后它一个接一个地运行扩展的每一行,每一行都在一个单独的 shell 调用中。这样做的结果是你的两个$(eval...)s 都将在扩展时运行,在 shell 开始做任何事情之前。

标签: shell unix makefile gnu-make


【解决方案1】:

只需在命令行前加上time,例如:time $(MAKE) -C $$dir

【讨论】:

  • 稍后我会将花费的时间重定向到文件
  • 你能推荐一些替代 A := $(shell date)
猜你喜欢
  • 2018-03-24
  • 1970-01-01
  • 2017-11-09
  • 2019-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多