2016-08-22 47 views
1

我想我的構建工作指標的一個更好的主意,但不幸的是,make不輸出時間戳本身。GNU製作 - 如何添加時間戳輸出(以最小的makefile修改)

如果我運行make --print-data-base,對於給定的目標是輸出線

# Last modified 2016-08-15 13:53:16 

但是這並沒有給我時間。

問題

是否有一種方式來獲得建設目標,而無需修改每個目標的時間?有些目標是在生成期間生成的makefile,因此不可能修改其配方。

可能的解決方案

我可以implement a pre- and post-recipe for every target和輸出時間戳的方式。

是給定一個好主意,這是平行make?很明顯,爲每個目標調用前後配方會增加構建時間,但我會很好。

回答

2

如果這是一個並行make,那麼「preactions」,「actions」和「postactions」可能是交錯的。也就是說,你可能會得到輸出,如:

Pre-action 12:03:05 
Pre-action 12:03:06 
building foo... 
building bar... 
Post-action 12:04:17 
Post-action 12:04:51 

因此,這將你理應向TARGETNAME變量傳遞給動作前和行動後腳本。

而且,開始和結束時間是不是所有有了解一個動作需要多長時間,當你在並行運行的東西;治而治A通過J.

除此之外共享與規則C中的處理器A可能需要更長的時間這條規則B,僅僅是因爲規則B單獨運行,我看到這種方法沒有問題。

+1

'SHELL'可以被重新定義爲一個遞歸擴展變量,所以'SHELL =我的腳本$ @'可能是通過目標名稱的清潔方式。另外,將'.SHELLFLAGS'設置爲空可能是一個好主意。 –

+0

如果你覺得無聊,我做了一個[分支問題](http://stackoverflow.com/questions/39086951/gnu-make-parallel-how-to-record-idle-vs-active-time-for-a -工作) – Adrian