使用cmake处理标头依赖项

时间:2017-03-24 11:54:12

标签: gcc cmake

我们说我在同一个文件夹中有main.cppa.hb.hmain.cpp包括a.ha.h包含b.h

检查generated depends.make文件,main.cpp.o取决于a.hb.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编译器标志?

1 个答案:

答案 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>。 这不是很漂亮,但做得很好。 : - )