2013-06-28 2 views

답변

0

문맥에서 완전히 벗어났기 때문에이 기능이 무엇인지 알 수있는 방법이 없습니다.

이 값은 $(call ...)의 다른 인스턴스로 전달되어야합니다. 나중에 같은 것을 볼 것이다 다음

QUOTE = '$1' 
COPY = @echo cp -f --preserve=mode,timestamps $(call $1,$<) $(call $1,[email protected]) 

을 : 그래서 예를 들어 당신의 메이크 파일이있는 경우 첫 번째 통화는 QUOTE로 대체 $1COPY 값으로 확장 할

foo: bar ; $(call COPY,QUOTE) 

를, 그래서 될 것이다 :

@echo cp -f --preserve=mode,timestamps $(call QUOTE,bar) $(call QUOTE,foo) 

은 그 확장됩니다, 당신은 끝낼 :

@echo cp -f --preserve=mode,timestamps 'bar' 'foo' 

하지만 더 이상의 정보가 없으면 더 말할 수 없습니다.

+0

감사를 참조 A

의 정의에 존재할 수에 할당됩니다. 그러나 나는 '전화'가 사용되는 것을 얻지 못한다. 나는 매뉴얼을 읽었지만 아직도 혼란 스럽다. – psykosonik

+0

글쎄, 아마 물어보아야 할 것이다. 이것은 IMO가 무엇을하는지 배우는 특히 좋은 예가 아닙니다. Call을 사용하면 인수를 취하는 자체 함수 (일종의)를 정의 할 수 있습니다. '$ 1','$ 2' 등을 사용하여 첫 번째, 두 번째 등의 인자에 대한 자리 표시 자로 "함수"의 본문을 변수에 넣습니다. 그런 다음 함수를 "실행"하려면 변수의 이름과 인수 값을'$ (call ...) '에 전달합니다. – MadScientist

0

'call'명령은 GNUmake에서 GNU 확장입니다. POSIX make 나 다른 대부분의 make에서는 지원되지 않습니다. 기본적으로 인수를 사용하여 매크로를 확장합니다.

$(call A,b,c,d) 

같은 뭔가 매크로 인수 b, cAd을 확장됩니다. 인수는 임시 매크로 $(1), $(2), ... the GNUmake documentation

관련 문제