2014-02-07 2 views
0

내 프로젝트 중 하나에 다소 일반적인 Makefile이 필요하지만 Makefiles에 define의 응답이없는 것 같습니다. 감소 최소한으로 대상이 일반적으로 생성되지 않습니다.

, 무슨 내가 가진 것은 다음

TARGETS = target1 target2 

define TARGET_template = 
$(1): 
    @echo "Hi there, I'm $(1)!" 
endef 

.PHONY: all 

all: $(TARGETS) 

$(foreach TARGET, $(TARGETS), $(eval $(call TARGET_template, $(TARGET)))) 

을 내가 make all을 실행할 경우, 나는 콘솔 출력이 될 것으로 기대 것 :

Hi there, I'm target1! 
Hi there, I'm target2! 

하지만 그 대신 내가 할

make: *** No rule to make target `target1', needed by `all'. Stop. 

내가 뭘 잘못하고 있니? GNU make를 사용하고 있습니다 3.81

답변

0

eval의 사용법을 디버깅하려면 을 info으로 대체하면 make가 규칙을 얻을 때 평가할 내용을 확인할 수 있습니다.

그러나 문제는 이것과 동일합니다 : GNU에 대한 How to use multiple-line variable

당신이 읽고있는 문서 (사용중인 것보다 최신 버전 적어도 나) 4.0을합니다. 실제로 사용하고있는 GNU 버전의 문서를 읽어야합니다 (3.81은 2006 년에 릴리스되었습니다).

관련 문제