2013-02-25 40 views
1

我正在使用GNU Make,並希望它爲每個配方命令添加一個前綴,因爲它會被回顯。例如,給定此生成的文件:GNU Make可以在配方回顯行中添加前綴嗎?

foo: 
    echo bar 
    echo baz 

實際行爲:

$ make -B foo 
echo bar 
bar 
echo baz 
baz 

期望的行爲:

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

(。在這種情況下,+是前綴)

它如果我可以配置前綴是什麼,那會很好,但這不是必需的。

回答

2

最簡單的方法是改變SHELL make變量。在這種情況下,使用-x參數運行shell應該會有效。喜歡的東西

$ make SHELL:='bash -x' 

甚至

$ make .SHELLFLAGS:='-x -c' 
在這種情況下

。對於更復雜的輸出快速shell腳本符合該法案:

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

其次

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

這就要求前綴與'makefile文件每個配方@'(或使用'.SILENT'),以防止打印命令呢? – Reid 2013-02-28 16:39:04

+0

@Reid嗯,我想你也可以使用'-s' make參數。 – bobbogo 2013-02-28 16:55:30

3

這不是很自然的東西。我不認爲你可以做的比一個可怕的雜牌更好:

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

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