我正在使用 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
(在这种情况下,+
是前缀。)
如果我可以配置前缀是什么,那就太好了,但这不是必需的。
这不是 Make 很自然地做的事情。我不认为你能比一个可怕的 kludge 做得更好:
define trick
@echo + $(1)
@$(1)
endef
foo:
$(call trick, echo bar)
$(call trick, echo baz)
最简单的方法是更改SHELL
make 变量。在这种情况下,使用参数运行 shell-x
应该可以解决问题。就像是
$ make SHELL:='bash -x'
甚至
$ make .SHELLFLAGS:='-x -c'
在这种情况下。对于更复杂的输出,一个快速的 shell 脚本很适合:
$ cat script
#!/bin/bash
echo "EXECUTING [$*]"
$*
其次是
$ make SHELL:=./script .SHELLFLAGS:=