假设我在同一个文件夹中有main.cpp、a.h和b.h。main.cpp包含a.h,而a.h包含b.h。检查生成的depends.make文件,main.cpp.o依赖于a.h和b.h,如预期所示。如果将b.h移动到文件夹B中,并使用-iquote B标志,则main.cpp.o不再依赖于b.h。我可以通过将include_directories(${CMAKE_SOURCE_DIR}/B)添加到CMakeLists.txt文件中来恢复依赖关系。然而,这样做会产生副作用:在编译main.cpp时,cmake使用-I/pathTo/B标志。我更喜欢使用-iquote而不是-I。在这种情况下,是否有一种方法让cmake自动检测依赖项,而不引入-I编译器标志?
-MMD
标志(请参见CMAKE_DEPFILE_FLAGS_CXX
)。我不确定通常更改CMAKE_INCLUDE_FLAG_CXX
(它确实定义了-I
标志)是否有帮助。或者简而言之:CMake 不支持开箱即用的-iquote
。 - Florian