bjam可以在每次完成目标时告诉你吗?

时间:2013-09-19 14:15:58

标签: bjam boost-jam

我正在构建一个脚本,通知我构建的进度。在构建开始时,bjam告诉我“更新#target ......”。

bjam是否具有在每次完成特定目标时通知您的功能?理想情况下,我想grep输出这些并输出一个百分比到我的屏幕。

1 个答案:

答案 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