Подавить "ничего нельзя сделать для всех" - PullRequest
16 голосов
/ 05 августа 2010

Я пишу короткий сценарий оболочки, который вызывает 'make all'.Это не критично, но есть ли способ, которым я могу подавить сообщение «ничего не может быть сделано для всех», если это так?Я надеюсь найти флаг для make, который подавляет это (не уверен, что он есть), но дополнительная строка или 2 кода тоже сработали бы.* Редактировать: чтобы быть более понятным, я только хочу, чтобы скрыть сообщения, что там ничего не поделаешь.В противном случае я хочу отобразить вывод.

Ответы [ 4 ]

15 голосов
/ 06 августа 2010

Вы можете сделать «все» целью PHONY (если это еще не сделано), которая имеет реальную цель в качестве предварительного условия и делает что-то незаметное:

.PHONY: all

all: realTarget
    @echo > /dev/null
8 голосов
/ 14 ноября 2014

Я хотел бы улучшить предыдущее решение, просто сделать его немного более эффективным ...:)

.PHONY: all
all: realTarget
        @:

@ true также будет работать, но немного медленнее, чем @: (Я сделал несколько тестов производительности).В любом случае, оба они работают быстрее, чем "echo> /dev/null"...

1 голос
/ 05 августа 2010

Флаг -s Глушители составляют: make -s all

РЕДАКТИРОВАТЬ: Я изначально ответил, что флаг -q заставил замолчать. Это работает для меня, хотя man-страница указывает -s, --silent, --quiet в качестве допустимых флагов.

0 голосов
/ 06 августа 2010

Решение grep:

{ make all 2>&1 1>&3 | grep -v 'No rule to make target `all' >&2; } 3>&1 

Конструкция 2>&1 1>&3 отправляет stdout make на fd 3 и stderr make на stdout.Затем grep читает из stdout предыдущей команды, удаляет поврежденную строку и отправляет ее stdout в stderr.Наконец, fd 3 возвращается на стандартный вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...