Зарегистрируйтесь вызванные команды делают

Существует ли способ зарегистрировать команды, сделать, вызывает для компиляции программы? Я знаю о параметрах -n и -p, но они любой не разрешает если-условия, но просто распечатывает их. Или они не работают, когда существуют вызовы, чтобы 'сделать' себя в Make-файле.

8
задан Customizer 10 March 2010 в 08:58
поделиться

5 ответов

Вы можете найти то, что ищете, в аннотированных журналах сборки, созданных SparkBuild .Сюда входят команды каждого правила, выполняемого в сборке, независимо от того, использовался ли символ «@» для предотвращения вывода команды make из командной строки.

Ваш комментарий об условиях if немного сбивает с толку: вы говорите о конструкциях оболочки или конструкциях make? Если вы имеете в виду конструкции оболочки, я не думаю, что у вас есть какой-либо способ получить именно то, что вам нужно, кроме как с помощью strace, как описано другими. Если вы имеете в виду конструкции make, то вывод, который вы видите , будет результатом разрешенного условного выражения.

1
ответ дан 5 December 2019 в 09:25
поделиться

Вы пробовали использовать параметр -d (отладка)?

Обратите внимание, что вместо этого вы можете контролировать количество информации с помощью --debug. Например, --debug = a (то же, что -d) или --debug = b, чтобы отображать только базовую информацию ...

1
ответ дан 5 December 2019 в 09:25
поделиться

Вы можете попытаться записать вызовы execve с помощью strace

strace -f -e execve make ...
2
ответ дан 5 December 2019 в 09:25
поделиться

Make записывает каждую команду, которую он выполняет, в консоль, поэтому

make 2>&1 | tee build.log

создаст файл журнала с именем build.log в качестве стороны эффект, который содержит то же самое, что написано на экране. ( man tee для получения дополнительных сведений.)

2> & 1 объединяет стандартный вывод и ошибки в один поток. Если вы не включили это, обычный вывод попадал бы в файл журнала, а ошибки - только на консоль. ( make записывает в stderr только тогда, когда команда возвращает код ошибки.)

Если вы хотите полностью подавить вывод в пользу записи в файл, это еще проще:

make 2>&1 > build.log

Потому что они просто захватывают консольный вывод они отлично работают с рекурсивным make .

3
ответ дан 5 December 2019 в 09:25
поделиться

Это

make SHELL="sh -x"

заставит shell (который make вызывает для оценки конструкций shell) печатать информацию о том, что он делает, позволяя вам увидеть, как оцениваются любые условия в командах shell.

11
ответ дан 5 December 2019 в 09:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: