규칙 외부에서 $@(규칙 대상 파일 이름)에 액세스

규칙 외부에서 $@(규칙 대상 파일 이름)에 액세스

프로그램이 Some_Command명령줄에서 대상 이름을 인수 중 하나로 가져오고(플래그를 통해 전달됨 -p) 해당 명령을 호출하는 인수가 COMMON_ARG변수 에 포함되기를 원한다고 가정해 보겠습니다. 재사용 (말) . 알아요$@다음을 사용하여 대상의 이름에 액세스할 수 있습니다.규칙 내에서. 이 변수의 평가를 연기할 수 있는 방법이 있습니까?

보통 내가 원하는

COMMON_ARG:= "-p $@"
foo:bar
    Some_Command $(COMMAND_ARG) $< -o $@

이것은 ... Make bar불리운다

Some_Command -p foo bar -o foo

답변1

=(대신)으로 변수를 선언 :=하면재귀 확장어디에 사용되든, 선언할 때는 그렇지 않습니다. 그러므로

COMMON_ARG = -p $@
foo: bar
        Some_Command $(COMMAND_ARG) $< -o $@

$@원하는 효과를 제공하기 위해 레시피 내에서 확장됩니다.

관련 정보