Подавите сообщения в, делают чистыми (Тихий make-файл удаляют),

Я задаюсь вопросом, как я могу избежать некоторого эха в Make-файле:

clean:
    rm -fr *.o

это правило распечатает:

$>make clean   
rm -fr *.o

$>

Как я могу избежать этого?

41
задан Nate Barbettini 4 April 2016 в 16:05
поделиться

3 ответа

На самом деле я искал что-то еще, добавляя эту строку в Makefile:

.SILENT:clean

при тихом выполнении каждого шага "чистой" цели.

Пока кто-нибудь не укажет на этот недостаток, я использую его как свое любимое решение!

24
ответ дан 27 November 2019 в 00:13
поделиться

Для начала: фактическая команда должна быть на следующей строке (или, по крайней мере, это в случае с 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 игнорирует ненулевой код возврата
71
ответ дан 27 November 2019 в 00:13
поделиться

Если вы поместите @ перед командой, она не отобразится на оболочке. Попробуйте изменить rm на @rm. ( Ссылка )

8
ответ дан 27 November 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: