2015년 9월 16일 수요일

Dependency file(.d) 파일이란.

make 를 수행하면 object file(.o) 과 함께 간혹 .d 파일이 생성된다.

이 .d 파일은 파일간의 의존성 관계를 표시하는 파일로 automake  를 통해 컴파일시
gcc 컴파일 옵션 -M 을 사용하는 경우 생성이 된다.




아래는 GNU Make 작성규칙에 대한 내용 중 종속을 자동으로 생성하기에 대한 내용이다.

어떤 프로그램을 위한 makefile에서 여러분이 작성하고자 하는 많은 규칙들은 종종 어떤 오브젝트 파일이 다른 헤더 파일에 의존한다는 것만을 말한다. 예를 들엇 `main.c'이 #include를 통해서 `defs.h'를 사용한다면 여러분은 다음과 같이 쓸 것이다:
main.o: defs.h
여러분은 make가, `defs.h'가 변할 때마다 `main.o'를 반드시 다시 만들어야 한다는 것을 알게 하기 위해서 이 규칙이 필요하다. 어떤 커다란 프로그램에 대해서는 makefile안에 그런 규칙들 수십개를 작성해야 할 것이다. 그리고, 여러분은 항상 makefile을, #include를 더하거나 제거할 때마다, 조심스럽게 업데이트해야 한다.
이런 고전분트를 피하기 위해서 대부분의 현대 C 컴파일러들은 여러분의 소스 파일에서 #include들을 찾아서, 여러분을 위해서 이런 규칙들 작성할 수 있다. 대개 컴파일러에게 `-M' 옵션을 주어서 이런 일을 할 수 있다. 예를 들어서 다음 명령은:
cc -M main.c
다음과 같은 출력을 생성한다:
main.o : main.c defs.h
그래서 여러분은 더이상 모든 이런 규칙들을 여러분 스스로 작성할 필요가 없다. 컴파일러는 여러분을 위해서 이런 것을 할 것이다.


이를 통해 프로제트의 파일 중 특정 파일이 변경되는 경우, make 유틸은 변경된 파알의 의존성 파일에 관계된 파일만 재컴파일 할 수 있다.


파일의 의존성 관계를 Makefile 내에 표시하는 경우 다음과 같이 할 수 있다.

test.o L test.c config.h env.h
test.c 파일은 config.h 파일과  env.h 파일에 의존성 관계를 가지고 있는 것을 의미한다.



댓글 없음:

댓글 쓰기