繁体   English   中英

计算makefile的构建时间

[英]Calculate makefile build time

任何有创意的想法如何使用环境变量来计算Makefile的完整构建时间? 我可以将时间存储在某个地方并最终进行比较吗?

我知道OP表示Windows操作系统,但据记录,在任何Linux机器上,您都可以使用time

>time make -j
real     0m9.774s
user     0m31.562s
sys      0m1.092s

在Windows 7上,您具有PowerShell。 因此,我们假设:

  • 您的makefile Makefile位于目录C:\\Dev\\ProjDir
  • 您的make工具是mingw32-make ,位于PATH

如果PowerShell不是您常用的控制台,请执行以下操作:

C:\Dev\ProjDir>powershell

在PowerShell提示符下,运行:

PS C:\Dev\ProjDir> Measure-Command { mingw32-make | Out-Default }

这将运行您的构建并显示输出,然后是时序报告,例如

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 244
Ticks             : 2443841
TotalDays         : 2.82851967592593E-06
TotalHours        : 6.78844722222222E-05
TotalMinutes      : 0.00407306833333333
TotalSeconds      : 0.2443841
TotalMilliseconds : 244.3841

继续进行OP的后续行动:

我想知道是否可以将其作为makefile的一部分来实现,因此我可以决定要测量的部分

计时“ makefile的一部分”的想法没有明确的道理。 运行make ,它将在生成任何内容之前先解析整个makefile 并计算出创建指定目标或默认目标所必须执行的全部步骤。 然后,采取所有这些步骤。

也许您想衡量制定特定目标所需的时间? 您可以按照已描述的方式进行操作。 例如,假设您的makefile可以创建两个库libfoo.liblibbar.lib而您想定时libfoo.lib的构建。 libfoo.lib制作libfoo.lib ,将运行以下make命令:

mingw32-make libfoo.lib

因此,要计时此命令,请运行:

PS C:\Dev\ProjDir> Measure-Command { mingw32-make libfoo.lib | Out-Default }

或者,假设你的makefile使得app.exe从源文件foo.cbar.c ,和你想的时间目标文件只是构建foo.objbar.obj 您将用来构建那些目标文件的make命令是:

mingw32-make foo.obj bar.obj

因此,您可以使用以下时间:

PS C:\Dev\ProjDir> Measure-Command { mingw32-make foo.obj bar.obj | Out-Default }

也许您希望能够在makefile中调用powershell的Measure-Command来计时特定目标的建立?

为此,您需要一个调用PowerShell的命令以运行其他命令。 那是:

powershell -c "some other command"

因此,在您的makefile文件中,您可以添加一个目标来计时任何其他目标的构建:

.phony: time
time:
    powershell -c "Measure-Command { $(MAKE) $(targets) | Out-Default }"

您可以这样使用time目标:

C:\Dev\ProjDir>mingw32-make time targets=app.exe

要么:

C:\Dev\ProjDir>mingw32-make time targets="foo.obj bar.obj"

当然,在您的makefile中,用于构建特定目标的命令可以在任何您喜欢的地方包括powershell -c "some other command"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM