자택경비대

Makefile에서 dependency가 누락되는 현상 해결법

Programming

예를 들면 다음과 같다:

all: foo bar

foo:
    echo foo

bar:
    echo bar

이렇게 Makefile이 존재할 때 make all을 하면 foo는 실행되는데 bar은 안된다던가, bar는 실행되지만 foo를 건너뛰는 등의 경우이다.

이런 경우에는 같은 폴더에 foo, bar과 같은 이름의 폴더가 존재하기 때문에 이런 결과가 나타난다.

해결방법은 .PHONY 구문을 이용하여 예외로 지정해주면 간단히 해결된다.

.PHONY: foo bar
all: foo bar

foo:
    echo foo

bar:
    echo bar