gcc - 使用 cmake 处理 header 依赖项

标签 gcc cmake

假设我在同一文件夹中有 main.cppa.hb.hmain.cpp包含a.ha.h包含b.h

查看生成的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 编译器标志?

最佳答案

您可能会发现这个 SO 答案很有帮助: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> . 它不漂亮,但可以完成工作。 :-)

关于gcc - 使用 cmake 处理 header 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42998855/

相关文章:

c - `multiple definition of` 很多变量错误 - 我的 make 文件不正确吗?

c - typeof的返回类型是什么?

c - 为什么 scanf 对大 float 输入错误?

android - 将 CMake 和 ndk-build 外部库集成到 Android Studio 项目中

c++ - CMake : CMAKE_MAKE_PROGRAM is not set

gcc - 如何将centos 6.9中的gcc 4.7.2升级到gcc 4.8

build - 构建 OGRE 时出现 Cmake 错误

c - 在 Windows 中将 Graphviz 与 Clion 结合使用

svn - 最佳实践 : versioning applications using CMake

c++ - 函数参数的析构函数在 gcc 和 MSVC 中被不同地调用