GNU Make可以为食谱回声线添加前缀吗?

时间:2013-02-25 18:44:05

标签: makefile gnu-make output

我正在使用GNU Make,并希望它在每个配方命令中添加前缀,因为它已经回显。例如,给定这个makefile:

foo:
    echo bar
    echo baz

实际行为:

$ make -B foo
echo bar
bar
echo baz
baz

期望的行为:

$ make -B foo
+ echo bar
bar
+ echo baz
baz

(在这种情况下,+是前缀。)

如果我能配置前缀是什么会很好,但这不是必需的。

2 个答案:

答案 0 :(得分:3)

这不是Make非常自然的事情。我认为你不能比一个可怕的kludge做得更好:

define trick
    @echo + $(1)
    @$(1)
endef

foo:
    $(call trick, echo bar)
    $(call trick, echo baz)

答案 1 :(得分:2)

最简单的方法是更改​​SHELL制作变量。在这种情况下,使用-x参数运行shell应该可以解决问题。像

这样的东西
$ make SHELL:='bash -x'

甚至

$ make .SHELLFLAGS:='-x -c'

在这种情况下。对于更复杂的输出,快速shell脚本符合要求:

$ cat script
#!/bin/bash
echo "EXECUTING [$*]"
$*

接着是

$ make SHELL:=./script .SHELLFLAGS:=