2015-01-26 1 views
1

Согласно the GNU make manual, эховые команды оболочки могут быть подавлены путем префикса соответствующих строк с помощью @.Можно ли применять рецепт, эхом, с помощью GNU Make?

Используя опцию -n или --just-print, можно сделать сухой пробег и распечатать все эти префиксные линии, фактически не делая их.

Возможно ли выполнить рецепты make и печатать команды оболочки одновременно? Иными словами, могу ли я применять эхо для все рецепты, независимо от того, есть ли у них @ в начале или нет?

+1

См. Также http://stackoverflow.com/questions/3861911/ignoring-at-symbol-in-makefiles/ –

ответ

2

С GNU Make 4.0 есть опция --trace. (Я не знаю, как то, что это самая ранняя версия, которая поддерживает --trace. Я просто знаю, что 4.0 поддерживает его.)

«--trace»

Показать трассировку информацию для «сделать» исполнения. Распечатывает весь рецепт , даже для рецептов, которые обычно молчат (из-за '.SILENT' или '@'). Также печатает имя файла makefile и номер строки , где был определен рецепт, и информация о том, почему цель перестраивается.

С этим Makefile:

all: 
    @echo foo 
    echo blah 

регулярный пробег:

$ make 
foo 
echo blah 
blah 

С --trace:

$ make --trace 
Makefile:2: target 'all' does not exist 
echo foo 
foo 
echo blah 
blah 

echo foo выводится, даже если он начинается с @.

+0

Спасибо. Опция '--trace' была представлена ​​с 4.0 (см. Http://lwn.net/Articles/569832/). Мне пришлось обновить с 3.8 –

Смежные вопросы