在 Windows 7 上,您拥有 PowerShell。所以我们假设:
- 您的 makefile
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 before 它制作任何东西并计算出整个序列
制作指定或默认目标必须采取的步骤。然后,它需要所有这些
步骤。
也许您想衡量制定一组特定目标所需的时间?你
可以按照已经描述的方式做到这一点。例如,假设您的 makefile
可以创建两个库 libfoo.lib 和 libbar.lib 并且你想计时
仅构建 libfoo.lib。要单独制作libfoo.lib,您可以使用 make 命令
运行是:
mingw32-make libfoo.lib
所以要计时这个命令,运行:
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-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" 任何你喜欢的地方。