вмдел не пoмню в какoм дистрибутиве кoмпиляция make'oм oтoбражалась в виде progress bar'a без лишних выдач. Как этo делается? Параметр -s не предлагать :)
ок синтаксис шела я нифига не знаю но что-то в этом роде:
n_lines= `find . -name *.c* | wc -l`
echo -n '['
for ((i=0 ; $i < $n_lines; i=$i+1 )) {
echo -n '-'
}
echo -n ']'
make 2>err.log | (
while read i; do
if [ $i =~ ] ; then
echo -n '='
fi
done
)
?
Можно один раз проделать "эталонную" сборку и посчитать сколько строк выдал make. А в последующих сборках просто по мере того как make опять выдаёт строки - считать их и двигать прогрессбар. Примерно так сделано в eclipse/cdt. Если вести таблицу соответствия время->колво_строк, то прогрессбар ещё точнее будет работать.
> Можно один раз проделать "эталонную" сборку и посчитать сколько строк выдал make. А в последующих сборках просто по мере того как make опять выдаёт строки - считать их и двигать прогрессбар. Примерно так сделано в eclipse/cdt. Если вести таблицу соответствия время->колво_строк, то прогрессбар ещё точнее будет работать.
О-кей. Первая сборка - компилим 1000 файлов, положим 1000 строк. Меняем что нибудь в двух файлах... и получаем несколько неточный прогноз :-) Неужели эклипс действительно так работает?
>> О-кей. Первая сборка - компилим 1000 файлов, положим 1000 строк. Меняем что нибудь в двух файлах... и получаем несколько неточный прогноз :-)
Согласен, прогноз не точный.
>> Неужели эклипс действительно так работает?
Да. А другого варианта попросту нет. Я использую в своём проекте cmake, кто-то автолулзы а Вася Пупкин свой велосипедный make.sh. Такое решение единственное более-менее универсальное, хоть и часто неточное.
Проще и точнее считать кол-во source-файлов в проекте. Да, будет неравномерно, зато быстро и точно. Вернее, не всех файлов, а тех, которые будут компилиться (в случае minial rebuild или как там...). Вощем, глубокий смысл идеи может быть реализован, имхо, на уровне самого сборщика.