Make записывает каждую команду, которую она выполняет, в консоль, поэтому
make 2>&1 | tee build.log
создаст файл журнала с именем build.log
в качестве побочного эффекта, который содержит те же материалы, что и на экране. (man tee
для более подробной информации.)
2>&1
объединяет стандартный вывод и ошибки в один поток. Если вы не включите это, обычный вывод будет идти в файл журнала, но ошибки будут идти только на консоль. (make
пишет в stderr только тогда, когда команда возвращает код ошибки.)
Если вы хотите полностью отключить вывод в пользу записи в файл, это еще проще:
make 2>&1 > build.log
Поскольку они просто захватывают вывод консоли, они прекрасно работают с рекурсивной make
.