1

ビルドの進行状況を通知するスクリプトを作成しています。ビルドの開始時に、bjam「# ターゲットを更新しています...」と表示されます。

bjam特定のターゲットのビルドが完了するたびに通知する機能はありますか? grep理想的には、これらの出力を行い、パーセンテージを画面に出力したいと考えています。

4

1 に答える 1

1

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
于 2013-12-12T22:02:06.527 に答える