Управляйте выводом команды make, чтобы она была менее многословной, не повторяйте каждую команду - PullRequest
2 голосов
/ 09 декабря 2011

В настоящее время я использую Makefile для отслеживания всех зависимостей и копирования моего проекта. Проблема в том, что make просто выводит все, что делает, и это затрудняет поиск (или даже чтение) более важной информации (например, предупреждений компилятора).

Есть ли способ контролировать, какая информация отображается на терминале? Я знаю, что есть опция -s, которая заставляет замолчать make , но это не то, что я хочу. Мне нужно что-то более изощренное, возможно, показ цели компиляции без отображения всей команды компиляции.

Есть ли способ контролировать это?

Примечание: аналогичный вопрос касается команд automake и autoconf. Но я ими не пользуюсь, и специально ищу что-то на make.

Ответы [ 3 ]

3 голосов
/ 09 декабря 2011

Ну, есть обычный бизнес

target: dependency1 dependency2
    @echo Making $@
    @$(CC) -o $@ $(OPTIONS) $^

, ведущий @, подавляет обычное поведение повторения действия без , подавляя его вывод .

Вывод различных действий можно подавить, перенаправив его на /dev/null.Не забудьте также оценить стандартную ошибку, если хотите, чтобы строка была действительно тихой.

1 голос
/ 01 апреля 2014

(Слишком поздно, добавление только для посадки Google здесь) Это работает для меня.В вашем Makefile вы можете контролировать многословность каждой команды, используя что-то вроде:

BRIEF = CC HOSTCC HOSTLD AS YASM AR LD
SILENT = DEPCC DEPHOSTCC DEPAS DEPYASM RANLIB RM STRIP
1 голос
/ 10 декабря 2011

Стандартный ответ Unix (в конце концов, `make`` - это инструмент Unix):

make (...) | grep (whatever you want to see)

Почему это не подходящее решение?

Вы также можете разместить фильтрацию внутри самого Makefile, например, путем настройки переменной SHELL или добавление цели, которая вызывает $(MAKE) | grep.

Основная идея состоит в том, чтобы разрешить включение и выключение фильтрации по желанию вызывающего абонента.

...