我正在构建一个脚本,通知我构建的进度。在构建开始时,bjam
告诉我“更新#target ......”。
bjam
是否具有在每次完成特定目标时通知您的功能?理想情况下,我想grep
输出这些并输出一个百分比到我的屏幕。
答案 0 :(得分: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
的shell脚本:
#!/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