ビルドの進行状況を通知するスクリプトを作成しています。ビルドの開始時に、bjam
「# ターゲットを更新しています...」と表示されます。
bjam
特定のターゲットのビルドが完了するたびに通知する機能はありますか? grep
理想的には、これらの出力を行い、パーセンテージを画面に出力したいと考えています。
ビルドの進行状況を通知するスクリプトを作成しています。ビルドの開始時に、bjam
「# ターゲットを更新しています...」と表示されます。
bjam
特定のターゲットのビルドが完了するたびに通知する機能はありますか? grep
理想的には、これらの出力を行い、パーセンテージを画面に出力したいと考えています。
bjam を使用した後、私はついに答えが目の前にあることに気付きました。ビルドされるターゲットごとに、オブジェクト名が画面に出力されることがわかります。*.o
したがって、私の場合、特定の時間に対応するラインとラインをカウントすることにより、ターゲットの数に合理的な近似値を持つソリューションを思いつきました*.so
。うまくいけば、これは将来誰かを助けることができます!
というエイリアスを作成しましたBjam
:
alias Bjam=' reset ; sudo bjam -j4 release address-model=32 toolset=gcc-arm target-os=linux threading=multi | Bjam2'
と呼ばれるシェルスクリプトBjam2
:
#!/bin/bash
n=0
while read line; do
if [ $(echo $line | grep -c '^...updating.*targets...$') -eq 1 ] ; then
TOT=$(echo $line| sed 's|^\.\.\.updating \([0-9]*\) targets\.\.\.$|\1|' )
fi
if [ $(echo $line | grep -c '^gcc\.compile\.c++.*\.o$' ) -eq 1 ] || [ $(echo $line | grep -c '^.*\.so$' ) -eq 1 ]; then
n=$((n+1))
echo "$n/$TOT : $line"
else
echo $line
fi
done