Makefile GNU可以为配方回音行添加前缀吗?

Makefile GNU可以为配方回音行添加前缀吗?,makefile,gnu-make,output,Makefile,Gnu Make,Output,我正在使用GNUMake,希望它在每个recipe命令回响时为其添加前缀。例如,给定此生成文件: foo: echo bar echo baz 实际行为: $ make -B foo echo bar bar echo baz baz $ make -B foo + echo bar bar + echo baz baz 期望的行为: $ make -B foo echo bar bar echo baz baz $ make -B foo + echo bar bar

我正在使用GNUMake,希望它在每个recipe命令回响时为其添加前缀。例如,给定此生成文件:

foo:
    echo bar
    echo baz
实际行为:

$ make -B foo
echo bar
bar
echo baz
baz
$ make -B foo
+ echo bar
bar
+ echo baz
baz
期望的行为:

$ make -B foo
echo bar
bar
echo baz
baz
$ make -B foo
+ echo bar
bar
+ echo baz
baz
(在本例中,
+
是前缀。)


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

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

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

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

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

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

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

最简单的方法是更改
SHELL
make变量。在这种情况下,使用
-x
参数运行shell应该可以做到这一点。差不多

$ make SHELL:='bash -x'
甚至

$ make .SHELLFLAGS:='-x -c'
在这种情况下。对于更复杂的输出,quick shell脚本非常适合:

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

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

最简单的方法是更改
SHELL
make变量。在这种情况下,使用
-x
参数运行shell应该可以做到这一点。差不多

$ make SHELL:='bash -x'
甚至

$ make .SHELLFLAGS:='-x -c'
在这种情况下。对于更复杂的输出,quick shell脚本非常适合:

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

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

这就需要在makefile中的每个配方前面加上
@
(或使用
.SILENT
),以防止Make也打印命令?@Reid好吧,我想你也可以使用
-s
Make参数。这就需要在makefile中的每个配方前面加上
@
(或使用
.SILENT
),为了防止Make也打印命令?@Reid我想您也可以使用
-s
Make参数。