Makefile GNU可以为配方回音行添加前缀吗?
我正在使用GNUMake,希望它在每个recipe命令回响时为其添加前缀。例如,给定此生成文件: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
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参数。