コードベース内の各ファイルのコンパイルにかかる時間を計測しようとしています。時間の出力とそれがタイミングだったコマンドを単一の行として書き出します
this SO answerによると、あなたは回、実際のコンパイルを行い、その後、ファイルに
/tmp/time-build
を結果を格納するスクリプトを書くことができますが:
#!/bin/bash
{ time g++ "[email protected]"; } 2> >(cat <(echo "g++ [email protected]") - >> /tmp/results.txt)
cmakeのを呼び出すときには、その後、CMAKE_CXX_COMPILER
を上書きすることができますmakeはスクリプトを使ってコンパイルを実行します。
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 ++と同じ行にを持っていますコマンド。
質問:
私のコマンドラインのfuではありません、これを回すのタスクまで:時間のreal
出力をキャプチャし、そして一緒にそれを含むコマンドの中へ
{ time g++ "[email protected]"; } 2> >(cat <(echo "g++ [email protected]") - >> /tmp/results.txt)
echo "g++ [email protected]"
を1行に入力します。
私は上記のコマンドの>(cat <(
と) -
部品が何を意味するのか分からない、とgrep real
とecho
を組み込むために、私の試みは
私はそれをどのように行うことができますが失敗していますか?
また、処理される各ファイルの出力タイミングをcmakeに与えるより慣れた方法があれば、それも理想的です。
「sed」トリッキーインラインのビットを追加しますか? –
@πάνταῥεyouあなたは何かを提案できますか? –
さて、私のsed fuはちょうど少し錆びました;-)。あなたは[related](https://stackoverflow.com/questions/5962285/cmake-compilation-statistics)の質問を見つけましたか? –