패턴별 최상위 대상 이름을 기반으로 변수 만들기

패턴별 최상위 대상 이름을 기반으로 변수 만들기

목표

일반적인 경우 대상(어머니 대상)이 전제 조건으로 다른 대상(자식 대상)을 호출하는 경우 패턴별 변수를 할당하고 싶습니다(참조:매뉴얼 페이지) 다음 조건을 충족합니다.

  • 변수의 값은 어머니 대상을 기준으로 합니다.
  • 하위 타겟에는 이 변수가 필요합니다.

문맥

사용 사례를 다음과 같이 줄일 수 있습니다. 단순화를 위해 패턴별 변수 대신 대상별 변수를 사용할 것입니다(문제는 동일함). 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-$@).

관련 정보