сделать параметр отладки, который повторяет (печатает) аргументы функции оболочки - PullRequest
0 голосов
/ 25 марта 2019

Есть ли опция make debug, которая печатает все исполнения функции оболочки?

Например, если у меня есть makefile

contents := $(shell echo foo)

all:

Я хочу напечатать "echo foo".

1 Ответ

0 голосов
/ 26 марта 2019

Вы можете предоставить свою собственную программу в виде оболочки, которая будет выводить команды и делать все, что вам нужно.

https://www.gnu.org/software/make/manual/html_node/Choosing-the-Shell.html:

5.3.2 Выбор оболочки

Программа, используемая в качестве оболочки, взята из переменной SHELL. Если эта переменная не установлена ​​в вашем make-файле, в качестве оболочки используется программа /bin/sh. Аргументы, переданные в оболочку, берутся из переменной .SHELLFLAGS. Значение по умолчанию .SHELLFLAGS обычно -c или -ec в режиме, соответствующем POSIX.

Итак, запустите:

SHELL=mysneakyprogram make all

Каждая команда будет передана mysneakyprogram с аргументом -c.

Подвох: это также относится к обычным командам, которые строят цели, а не только $(shell ...); Я не думаю, что вы можете различить два случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...