make manual에서 Automatic Dependency Generation을 통해 읽었으며이 기능이 필요한 이유를 알 수 없습니다. 이 프로젝트를 내가 일하고 및 I는 다음과 같이 구성되어 처음부터 쓰기 시작한다 :이은 각 .cpp 파일이 동일한 단일 .H 파일을 포함해야 자신의 폴더 자동 종속성 생성
- 각 단위 (라이브러리) 동일한 디렉토리의 이름. 이 규칙은 원형 의존성의 경우와 같이 너무 제한적일 수 있습니다.이 경우 다음 규칙에 설명 된 것과 같이 다른 .h 파일을 포함 할 수 있습니다.
- .h 파일에 다른 헤더를 포함하는 경우, 종속성이 다른 유닛 (라이브러리)에있는 경우 항상 프로젝트의 루트 디렉토리에 상대적인 경로를 사용하십시오. 그렇지 않으면 파일 이름 만 포함 시키십시오.
makefile에서 나는 -I .
을 컴파일러에 전달합니다. 디렉터리 X에서 .cpp 파일을 발견하면 동일한 디렉터리 (또는 .
디렉터리)에서 .h 파일을 검색합니다. .h 파일을 구문 분석 할 때 .
폴더에 대한 포함이 발생하므로 파일을 찾을 위치를 알 수 있습니다.
이제 누구도 -M
플래그가있는 종속성 목록을 생성하고 위에 설명 된 것처럼 코드를 구조화 할 수 있다면 불분명 한 .d 파일 (종속성 fie)을 생성하기 위해 sed를 사용하지 않는 이유는 무엇입니까? 코드 파일에서 특정 종속성 목록을 생성 할 시점이 없습니다.
아, 맞다 ... 나는 이해합니다. 그러나 .cpp 파일을 컴파일하기 전에 전체 종속성 트리에서 변경 사항을 확인하지는 않습니까? –
@MihaiTodor : Make는 의존성이 무엇인지 파악하지 못합니다. 모든 make가 할 수있는 일은 의존성의 변화를 기반으로 규칙을 재실행해야 하는지를 파악하는 것입니다. 각 대상에 대한 종속성 목록을 제공해야합니다. –
당신 말이 맞아요. 지금은 이해. 고마워요! –