簡體   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