.d파일이란?

요약

C/C++ 빌드에서 .d 파일은 의존성 파일이다. 하나의 소스 파일이 어떤 헤더와 다른 입력 파일에 의존하는지 기록한다.




예를 들어 main.c가 config.h를 포함한다면, main.o를 다시 만들어야 하는 조건에 config.h도 포함되어야 한다.




main.o: main.c config.h




누가 사용하나

컴파일러는 -MMD, -MP 같은 옵션으로 의존성 정보를 가진 .d 파일을 생성할 수 있다. 실제로 이 파일을 읽어 재빌드 여부를 판단하는 주체는 보통 make, Ninja, CMake가 만든 빌드 규칙 같은 빌드 시스템이다.




헤더 파일만 수정했을 때 관련된 .c 파일만 다시 컴파일하려면 이 정보가 필요하다. 의존성을 직접 관리하지 않아도 되므로 전체 빌드 시간을 줄일 수 있다.




Makefile에서의 사용

Makefile에서는 생성된 .d 파일을 포함해 의존성 규칙을 추가한다. 처음 빌드할 때 아직 파일이 없어도 실패하지 않도록 -include를 자주 사용한다.




CPPFLAGS += -MMD -MP

-include $(OBJECTS:.o=.d)




정리하면 .d 파일은 소스와 헤더의 관계를 기록하고, 빌드 시스템은 이 기록을 이용해 변경된 부분만 다시 컴파일한다.

Comments

댓글을 불러오고 있습니다.