2014-04-28 5 views
0

내 프로젝트의 일부로 다른 모듈의 종속성을 그래프로 작성하고 있습니다.Makefile에서 응용 프로그램을 테스트하는 방법

dependency-graph.png: dependency-graph.txt 
     dot -Tpng $< -o [email protected] 

이 규칙은 프로그램 '도트'(graphiviz 패키지)가 있다고 가정합니다. 공동 작업자가 '도트'를 설치하지 않도록하고 싶지 않다면, 위의 규칙을 어떻게 활성화해야합니까? '점'이 설치되어 있습니까?

내가 온 옷장은 다음

GRAPH_PROGRAM = dot 
PATH_DOT := $(type -p $(GRAPH_PROGRAM)) 
dependency-graph.png: dependency-graph.txt 
ifneq (,$(findstring $(GRAPH_PROGRAM),$(PATH_DOT))) 
    $(GRAPH_PROGRAM) -Tpng $< -o [email protected] 
else 
    [email protected] "The program '$(GRAPH_PROGRAM)' is not installed," 
    [email protected] "so no graphics will be produced" 
    [email protected] "Please install it using:" 
    [email protected] " sudo apt-get install graphviz" 
endif 

하지만 그것은 단지 '다른'메시지를 출력한다. 대신

PATH_DOT := "/usr/bin/dot" 

또는

PATH_DOT := "" 
+0

Sh 왜냐하면 당신이 알아야 할 것이기 때문입니다 : 왜 그 * 작동하지 않았습니까? 게시물에 넣으십시오. –

+0

makefile에서 우리가 볼 필요가있는 부분은, 당신은 제공하지 않았다 :'dependency-graph.png'가 어떻게 목표로 사용되는지를 보여 주지만, 중요한 것은 그것이 어떻게 전제 조건으로 사용 되는가이다 : _that's_ 당신 변경해야합니다. 규칙을 지키지 않으면 상처를 입히지 않고 도트가 없으면 만들 수 없으므로 존재하지 않는다면 어떤 것이 든 필수 조건이 아닌지 확인해야합니다. – MadScientist

+0

최소한의 예를 만드는 데 많은 도움이됩니다. 지금 확장해라. –

답변

0

제공 그래프를 만들 것입니다 아래 규칙에 넣을 경우 내가 올바른 결과를 얻을 수 있기 때문에 나는, 내가 잘못 구조

PATH_DOT := $(type -p $(GRAPH_PROGRAM)) 

을 사용하고 있습니다 의심 그 점은 PATH에 있습니다 :

dependency-graph.png: dependency-graph.txt 
     type -p dot && dot -Tpng $< -o [email protected] 
관련 문제