C 언어로 개발하다 보면 헤더 파일들끼리 의존성이 생겨나는데, 그 수가 적을 때는 수동으로 Makefile에 적어도 되지만 많아질 경우 수동으로 하기는 곤란해진다. 이럴 때 gccmakedep이라는 도구를 사용하면 자동으로 이런 헤더 사이 의존관계를 처리 할 수 있다. 최근에는 gccmakedep이 없는 경우가 보통이라 gcc -M 옵션을 사용하는 것을 더 추천한다.

문제는 이렇게 만든 의존 관계를 Makefile에 포함시킬 경우 git 같은 도구에서 업데이트를 한 것으로 처리하기 때문에 깔끔하지 않다. 왜냐하면 의존 관계는 환경에 따라 얼마든지 다르기 때문에 각 컴파일 환경에 따라 매번 새로 갱신을 해야하는 내용이기 때문이다.

이런 경우 의존 관계를 별도의 파일로 생성을 해서 처리하고, 해당 파일은 .gitignore에 포함시키면 깔끔하게 관리 할 수 있다.

1
2
3
4
5
6
dep :
        gcc -M $(INC) $(SRCS) > .depend

ifeq (.depend,$(wildcard .depend))
    include .depend
endif