Подтвердить что ты не робот

Выполнение команд печати перед выполнением, когда НЕ использовать CMake

Я вижу, что это тот же вопрос, что и

Выполнение команд печати cmake перед выполнением

Но этот ответ не работает для меня. Я предполагаю, что ответ работает только с cmake. Какие опции работают без cmake?

Заметка пробовала эти

make VERBOSE=1 target
make target VERBOSE=1
VERBOSE=1 make target
make V=1 target
make target V=1
V=1 make target
make -V target
make -v target

никто из них не работал.

make -v возвращает

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu
4b9b3361

Ответ 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 файл интерпретирует ее.

Ответ 2

Я думаю, что это то, что вы хотите: make MAKE_VERBOSE = 1 цель