使调试选项回显(打印)外壳函数参数

时间:2019-03-25 20:34:59

标签: makefile

是否有make debug选项可以打印出所有shell函数执行信息?

例如,如果我有makefile

contents := $(shell echo foo)

all:

我希望它打印“ echo foo”。

1 个答案:

答案 0 :(得分:0)

您可以将自己的程序作为外壳提供,它将回显命令并执行您需要执行的其他任何操作。

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

  

5.3.2选择外壳

     

用作外壳程序的程序来自变量SHELL。如果未在makefile中设置此变量,则将程序/bin/sh用作shell。传递给shell的参数来自变量.SHELLFLAGS.SHELLFLAGS的默认值通常为-c,或在符合POSIX的模式下为-ec

因此,运行:

SHELL=mysneakyprogram make all

每个命令都将使用mysneakyprogram参数传递给-c

要注意的是:这不仅适用于构建目标的普通命令,不仅适用于$(shell ...);我认为您无法区分这两种情况。