2011-04-06 4 views
3

가정 해 보겠습니다 I 메이크 파일에 다음과 같은 규칙이 있습니다대상에 대한 종속성 목록에서 특정 종속성을하는 방법을

%.foo: %.bar %.spam %.bot
<tab> echo "hello1" > $<

가 어떻게 또한으로 "hello2를"에코 할 수 있습니다 두 번째 종속성 (.bot 파일은 제외), 즉 .spam 파일? 감사합니다

+1

또는'$ (word 2, $ ^)'를 사용하십시오. 올린 사람 : http://stackoverflow.com/questions/11424204 –

답변

6
%.foo: %.bar %.spam %.bot 
    echo "hello1" > $<  
    echo hello2 > $(word 2,$^) 

(적어도 꽤 의미가 전체 운동을하게 내가 아는 껍질에, 그 > 덮어 쓰기를합니다. >>를 사용하여 추가하려면.)

1

뭘 요구하는지하면 정반대입니다 make의 정상적인 작동 : 규칙은 에있는 파일을 수정해야합니다. 의 파일은 콜론의이 아니라 콜론의입니다. 당신은 여기에서 많은 문맥을 부여하지 않았기 때문에 당신보다 더 구체적인 조언을하기가 어렵습니다.

지금까지 당신이 요구 한 특정 질문으로,이 같은 것을 사용할 수 있습니다 :이 % 문자를 일치하는 파일 이름의 일부로 정의 된 $* 자동 변수를 사용

%.foo: %.bar %.spam %.bot 
    echo "hello1" > $< 
    echo "hello2" > $*.spam 

패턴 규칙에서.

+0

예. Makefile을 컴파일 용이 아닌 다른 용도로 사용하고 있습니다. 베타가 제안한 방법을 알았지 만 나는 네 방식을 선호한다. 그것은 청초하다. 감사 – RNAer

관련 문제