Подавить эхо вызова команды в make-файле? - PullRequest
102 голосов
/ 01 апреля 2012

Я написал программу для назначения, которая должна выводить ее вывод на стандартный вывод. Спецификация присваивания требует создания Makefile, который при вызове как make run > outputFile должен запускать программу и записывать вывод в файл, который имеет отпечаток SHA1, идентичный указанному в спецификации.

Моя проблема в том, что мой make-файл:

...
run:
     java myprogram

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

Есть ли способ выполнить команду без ее вызова в командной строке?

Ответы [ 4 ]

177 голосов
/ 01 апреля 2012

Добавьте @ в начало команды, чтобы gmake не печатал выполняемую команду.Например:

run:
     @java myprogram

Как предположил Оли, это особенность Make, а не Bash.

С другой стороны, Bash никогда не будет отображать эхо-команды, выполняемые, если вы не скажете этосделать это явно (т.е. с опцией -x).

52 голосов
/ 17 февраля 2016

Еще проще, используйте make -s (тихий режим)!

16 голосов
/ 22 августа 2018

Вы также можете использовать .SILENT

.SILENT: run
    hi:
         echo "Hola!"
    run:
         java myprogram

В этом случае make hi выведет команду, но make run не выведет.

2 голосов
/ 11 сентября 2015

Эффект, предшествующий команде с @, можно распространить на раздел, расширив команду, используя обратную косую черту в строке.Если для подавления вывода требуется команда .PHONY, раздел можно начать с:

@printf "..."
...