Build 计算生成文件生成时间
如何使用环境变量来计算makefile的完整构建时间,有什么创造性的想法吗?我可以将时间存储在某个地方,并在最后进行比较吗?在Windows 7上,您拥有PowerShell。因此,我们假设:Build 计算生成文件生成时间,build,makefile,environment-variables,Build,Makefile,Environment Variables,如何使用环境变量来计算makefile的完整构建时间,有什么创造性的想法吗?我可以将时间存储在某个地方,并在最后进行比较吗?在Windows 7上,您拥有PowerShell。因此,我们假设: 您的makefilemakefile位于目录C:\Dev\ProjDir 您的make工具是mingw32 make,并且位于您的路径中 如果PowerShell不是您常用的控制台,请执行以下操作: C:\Dev\ProjDir>powershell 在PowerShell提示符下,运行: P
- 您的makefile
位于目录makefile
C:\Dev\ProjDir
- 您的make工具是
,并且位于您的mingw32 make
路径中
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的一部分实现,
所以我可以决定测量哪个部分
计时“生成文件的一部分”的想法没有明确的意义。当您运行make
时,它将解析
在生成任何内容并计算出整个
创建指定或默认目标所必须采取的步骤。然后,它需要所有这些
步骤
也许您想测量制定一组特定目标所需的时间?你
可以按照前面描述的方式来完成。例如,假设您的makefile
可以创建两个库libfoo.lib
和libbar.lib
,并且您希望为
构建justlibfoo.lib
。要自行生成libfoo.lib
,可以使用make命令
跑步是:
因此,要计算此命令的时间,请运行:
PS C:\Dev\ProjDir> Measure-Command { mingw32-make libfoo.lib | Out-Default }
或者假设您的makefile从源文件foo.c
和bar.c
生成app.exe
,并且
您希望只计算对象文件的构建时间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命令
确定特定目标建设的时间
为此,您需要一个调用PowerShell以运行其他命令的命令。即:
powershell -c "some other command"
因此,您可以在makefile中添加一个目标,用于为任何其他目标的构建计时:
.phony: time
time:
powershell -c "Measure-Command { $(MAKE) $(targets) | Out-Default }"
您可以这样使用时间
目标:
C:\Dev\ProjDir>mingw32-make time targets=app.exe
或:
当然,在makefile中,构建特定目标的命令可以
包括
powershell-c“其他一些命令”
,只要你喜欢。我知道OP是指Windows操作系统,但请记住,在任何Linux机器上,你都可以使用time
:
>time make -j
real 0m9.774s
user 0m31.562s
sys 0m1.092s
这将取决于您所谈论的操作系统。假设它可以在没有环境变量的情况下完成?mingw制作3.82版WIN7操作系统。这两种方法都可以,有或没有e-variables这确实有效,但我想知道它是否可以作为makefile的一部分实现,这样我就可以决定测量哪一部分了。“-c”选项解决了我的问题,我可以指出带有PowerShell的eclipse构建-c“…”谢谢!!不客气。如果你认为答案能解决你的问题,那么接受它是合适的:
C:\Dev\ProjDir>mingw32-make time targets="foo.obj bar.obj"
>time make -j
real 0m9.774s
user 0m31.562s
sys 0m1.092s