2009-12-06 5 views
4

패턴 의존 변수에 의존성을 가진 GNU make 패턴 규칙을 정의하고 싶습니다. 내가 원하는 것은이 같은 것입니다 :패턴 의존 규칙에서 의존 관계 패턴을 사용하는 법

%.exe : $(%_EXE_SOURCES) $(%_EXE_RESOURCES) 
    $(CSC_V)$(CSC) $(CSCFLAGS) $($*_EXE_CSCFLAGS) -target:exe \ 
      -out:[email protected] $($*_EXE_SOURCES) $($*_EXE_RESOURCES) 

나중에 규칙을 구축하는 작품을 발표

FOO_EXE_SOURCES = src/Foo.cs 
all: Foo.exe 

같은 것을 정의 할 수; 규칙 본문에서 $($*_EXE_SOURCES) 변수는 $(FOO_EXE_SOURCES)으로 확장되며 src/Foo.cs으로 확장됩니다. 그러나 종속성은 제대로 확장되지 않습니다. src/Foo.cs를 변경해도 Foo.exe가 재구성되지 않습니다.

필자는 이것이 make에서 실제로 할 수 없다고 생각하지만, 누군가가 비슷하게 조각을 만들 수 있습니까?

답변

8

"보조 확장"을 사용할 수 있습니다. 이런 식으로 뭔가 당신이 찾고있는 무엇을 달성해야한다 : 차 확장을 활성화

Foo_EXE_SOURCES := foo.cs bar.cs baz.cs 
all: Foo.exe 

.SECONDEXPANSION: 
%.exe: $$($$*_EXE_SOURCES) 
    $(CSC_V)$(CSC) $(CSCFLAGS) $($*_EXE_CSCFLAGS) -target:exe \ 
      -out:[email protected] $($*_EXE_SOURCES) $($*_EXE_RESOURCES) 

는 것, 그렇지 않으면 하지 작업 일입니다 prerequesites 목록에서 자동 변수의 사용 (이 경우 즉 $*)를 할 수 있습니다.

+0

우수. 그게 정확히 내가 겪은 것처럼 보입니다. – RAOF

관련 문제