我試圖計算我的代碼庫中每個文件需要多長時間才能編譯的時間。將時間輸出和它計時的命令寫成一行
據this SO answer,你可以寫一個腳本,做次實際編譯,然後存儲在一個文件中
/tmp/time-build
結果:
#!/bin/bash
{ time g++ "[email protected]"; } 2> >(cat <(echo "g++ [email protected]") - >> /tmp/results.txt)
然後,您可以覆蓋CMAKE_CXX_COMPILER
調用cmake的時以便使用該腳本來執行彙編
cmake .. -DCMAKE_CXX_COMPILER=/tmp/time-build
make
這像宣傳的那樣,和產生的結果類似以下內容:
real 0m1.190s
user 0m1.044s
sys 0m0.140s
g++ -Werror -Wall -Wextra ... /src/test/foo.cpp
然而,爲緩解加工,我想只存儲real
時間,並將其上的G ++同一行命令。
問:
我的命令行拂達不到把這個任務:
{ time g++ "[email protected]"; } 2> >(cat <(echo "g++ [email protected]") - >> /tmp/results.txt)
進入僅僅捕捉時間的real
輸出,包括它沿着命令一條線上的echo "g++ [email protected]"
。
我不知道是什麼>(cat <(
和) -
份上述命令的意思的,我嘗試結合了grep real
和echo
失敗
我怎麼能這樣做?或者,如果有更習慣性的方法讓cmake獲得每個處理文件的輸出時間,那也是理想的選擇。
添加一點'sed'欺騙內聯? –
@πάνταῥεῖ你能推薦一些嗎? –
嗯,我的sed fu現在有點生疏了;-)。你有沒有發現[相關](https://stackoverflow.com/questions/5962285/cmake-compilation-statistics)問題? –