동일한 폴더에 main.cpp
, a.h
및 b.h
이 있다고 가정 해 봅니다. main.cpp
은 a.h
을 포함하고 a.h
은 b.h
을 포함합니다.cmake와의 헤더 종속성 처리
파일을 확인하면 main.cpp.o
은 a.h
및 b.h
모두 예상대로 나타납니다.
b.h
경우 main.cpp.o
이 b.h
에 더 이상 의존하지 않는, 폴더 B
로 이동하고 -iquote B
플래그를 사용한다.
파일에 include_directories(${CMAKE_SOURCE_DIR}/B)
을 추가하여 종속성을 되돌릴 수 있습니다. 그러나 이것은 부작용이 있습니다. main.cpp
을 컴파일 할 때 cmake
은 -I/pathTo/B
플래그를 사용합니다. -I
대신 -iquote
을 사용하는 것이 더 좋습니다.
이 -I
컴파일러 플래그를 도입하지 않고도 자동으로 종속성을 감지하도록하는 두 번째 경우가 있습니까? 당신이 그렇게 답을 찾을 수 있습니다
CMake는 종속성 검사를 수행하지 않습니다. 컴파일러는 헤더 의존성을 탐지/추적/출력합니다. 예 : CMake는'-MMD' 플래그를 컴파일러 호출에 추가합니다 (예 :'CMAKE_DEPFILE_FLAGS_CXX' 참조). 나는 그것이'-I' 플래그를 정의하는'CMAKE_INCLUDE_FLAG_CXX'를 대체적으로 바꾸는 데 도움이되는지 확실하지 않습니다. 또는 짧게 긴 이야기 : CMake는 즉시 사용할 수있는'-iquote'를 지원하지 않습니다. – Florian