2013-07-18 2 views
2

아래의 간단한 예제에서 make dist을 수행하고 distdebugdistrelease 전에 distclean 대상을 실행하고 싶습니다. Makefile 대상을 여러 번 호출하도록하려면 어떻게해야합니까?

.PHONY: distclean 

dist: distdebug distrelease 
    @echo in dist 

distdebug: distclean 
    @echo in distdebug 

distrelease:   
    @echo in distrelease 

distclean: 
    @echo in distclean 

불행하게도, .PHONY를 사용에도 불구하고,으로 distclean 한 번만 호출됩니다

[email protected]:/tmp$ make dist 
in distclean 
in distdebug 
in distrelease 
in dist 

내가 확인을 같은데요은 다시 실행되지 그래서 그 이미 한 번 distclean를 실행하는 것을 알고있다. 어떻게하면 distclean을 여러 번 실행할 수 있습니까?

+0

귀하의 질문은 제가 그 반대입니다. 필자는 "distclean"을 정확하게 한 번 호출하고 싶었다. –

답변

8

일반 규칙을 사용할 수 없습니다. Make는 주어진 타겟을 정확히 한 번만 빌드합니다. 일반적으로

distdebug: 
     $(MAKE) distclean 
     @echo in distdebug 
distrelease: 
     $(MAKE) distclean 
     @echo in distrelease 

는 비록 다른 빌드를 계획하는 것이 좋습니다, 다른 하위 디렉토리에 넣어 빌드의 다른 유형에 대한 목표를 가지고 : 당신은 재귀 메이크업 호출을 사용하여 전송할 수 있습니다. 그렇게하면 사이를 청소하지 않아도됩니다.

관련 문제