1

我正在使用 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

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

如果我可以配置前缀是什么,那就太好了,但这不是必需的。

4

2 回答 2

3

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

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

foo:
    $(call trick, echo bar)
    $(call trick, echo baz)
于 2013-02-25T19:30:41.583 回答
2

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

$ make SHELL:='bash -x'

甚至

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

在这种情况下。对于更复杂的输出,一个快速的 shell 脚本很适合:

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

其次是

$ make SHELL:=./script .SHELLFLAGS:=
于 2013-02-27T19:36:32.230 回答