
목표
일반적인 경우 대상(어머니 대상)이 전제 조건으로 다른 대상(자식 대상)을 호출하는 경우 패턴별 변수를 할당하고 싶습니다(참조:매뉴얼 페이지) 다음 조건을 충족합니다.
- 변수의 값은 어머니 대상을 기준으로 합니다.
- 하위 타겟에는 이 변수가 필요합니다.
문맥
사용 사례를 다음과 같이 줄일 수 있습니다. 단순화를 위해 패턴별 변수 대신 대상별 변수를 사용할 것입니다(문제는 동일함). Makefile은 다음과 같습니다.
mother-target: VAR = Var-$@
mother-target: child-target
child-target:
echo VAR=$(VAR)
make
을 출력할 것이고 VAR=Var-child-target
, 나는 그것을 출력하고 싶습니다 VAR=Var-mother-target
.
질문:변수를 정의하는 대상의 이름을 어떻게 참조하나요? 자동 @
변수는 항상 체인의 "마지막" 대상으로 확인되는 것 같습니다.
시도:
VAR
단순히 확장된 변수로, 즉mother-target: VAR := Var-$@
. 그러나$@
비어 있습니다.VAR
상속되지 않도록 비공개로 선언하는 것은 내 사용 사례에 적합하지 않습니다. 하위 대상에는 변수가 필요합니다.
실제 사례는 대상 이름을 확인하는 것이 실제로 유용한 패턴별 변수를 사용하는 것입니다(예: %-target: VAR = Var-$@
).