[英]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
位于目录C:\\Dev\\ProjDir
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.lib
和libbar.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.c
和bar.c
,和你想的时间目标文件只是构建foo.obj
, bar.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.