Ответ 1
По умолчанию make
выполняет печать каждой команды перед ее выполнением. Эта печать может быть подавлена одним из следующих механизмов:
- в каждом конкретном случае, добавив
@
в начале команды - глобально, добавив встроенную цель .SILENT.
- где-то вдоль процесса make, путем вызова под-make (ов) с одним из флагов
-s
,--silent
или--quiet
, например, в$(MAKE) --silent -C someDir
. С этого момента команда эхо-сигнала подавляется в суб-маке.
Если ваш make файл не печатает команды, возможно, он использует один из этих трех механизмов, и вы должны действительно проверить makefile (ы), чтобы выяснить, какой из них.
В качестве обходного пути, чтобы избежать этих механизмов подавления эха, вы можете переопределить оболочку, которая будет использоваться для использования режима отладки, например, как make SHELL="/bin/bash -x" target
. Другие оболочки имеют аналогичные варианты. При таком подходе это не make
печать команд, а сама оболочка.
Если вы используете флаг -n
или --just-print
, механизмы подавления эха будут проигнорированы, и вы всегда увидите все команды, которые make
думает, должны быть выполнены, но они фактически не выполняются, просто распечатываются, Это может быть хорошим способом выяснить, что вы действительно можете ожидать.
Переменная VERBOSE
не имеет стандартного значения для make
, но только если ваш make файл интерпретирует ее.