2013-02-25 2 views
1

GNU Make를 사용하고 있으며 각 레시피 명령에 에코가 추가 될 때 프리픽스를 추가하고 싶습니다.GNU Make가 recipe 에코 라인에 접두사를 추가 할 수 있습니까?

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 메이크업 변수를 변경하는 것입니다. 이 경우 -x 매개 변수를 사용하여 셸을 실행하면 트릭을 수행해야합니다.

$ make SHELL:='bash -x' 

또는이 경우에도

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

비슷 해요. `@

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

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

이 다음'과 메이크 각 조리법을 접두사 필요 다음 (또는'.SILENT' 사용)에 : 더 정교한 출력을위한 빠른 쉘 스크립트는 법안을 맞는 make가 명령을 인쇄하지 못하게합니까? – Reid

+0

@Reid 그럼'-s' make 매개 변수를 사용할 수도 있습니다. – bobbogo

3

이것은 뭔가 자연스럽지 않습니다. 난 당신이 끔찍한 kludge보다 더 잘 할 수 있다고 생각하지 않습니다 :

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

foo: 
    $(call trick, echo bar) 
    $(call trick, echo baz) 
관련 문제