我们说我在同一个文件夹中有main.cpp
,a.h
和b.h
。 main.cpp
包括a.h
,a.h
包含b.h
。
检查generated 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
编译器标志?
答案 0 :(得分:0)
您可能会发现此答案有用:https://stackoverflow.com/a/9899919/5820799
归结为不使用include_directories(${CMAKE_SOURCE_DIR}/B)
,而是手动添加-iquote
指令:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -iquote ${CMAKE_SOURCE_DIR}/B")
这将生成-iquote <path>
而不是-I <path>
。
这不是很漂亮,但做得很好。 : - )