Я задаюсь вопросом, как я могу избежать некоторого эха в Make-файле:
clean:
rm -fr *.o
это правило распечатает:
$>make clean
rm -fr *.o
$>
Как я могу избежать этого?
На самом деле я искал что-то еще, добавляя эту строку в Makefile:
.SILENT:clean
при тихом выполнении каждого шага "чистой" цели.
Пока кто-нибудь не укажет на этот недостаток, я использую его как свое любимое решение!
Для начала: фактическая команда должна быть на следующей строке (или, по крайней мере, это в случае с GNU Make, он может отличаться от других Make - я не уверен в этом)
clean:
rm -rf *.o
(обратите внимание, вам понадобится TAB перед rm -rf * .o
как и в каждом правиле)
Чтобы отключить его, можно указать префикс @
:
, чтобы ваш make-файл стал
clean:
@rm -rf *.o
. Если нет файлов *. o
для удалить, вы все равно можете получить сообщение об ошибке. Чтобы подавить их, добавьте следующее
clean:
-@rm -rf *.o 2>/dev/null || true
2> / dev / null
направляет любое сообщение об ошибке в / dev / null - чтобы вы не видели никаких ошибок -
впереди команды гарантирует, что make
игнорирует ненулевой код возврата Если вы поместите @ перед командой, она не отобразится на оболочке. Попробуйте изменить rm на @rm. ( Ссылка )