如何设置include相对于源文件从根路径的相对性?

How to set includes to be relative to the relativity of the source file from the root path?

抱歉,如果我对问题的措辞有点混乱:

如何设置include相对于源文件从根路径的相对性?

我正在尝试编译一个 C++ 项目(不是我自己的),并且有两个文件夹:srcinclude

.cpp 源文件位于 src,头文件位于 include

我要编译所有的源文件。

但是,源文件中的 #include 是相对的,就像 include 文件夹树和 src 文件夹树合并了一样。

例如 src/foo/bar/baz.cpp 可能有 #include "baz.h"。在这种情况下,应该在 include/foo/bar/baz.h 而不是 include/baz.h.

中搜索头文件

如何使用 GCC 实现此目的?我确定互联网上已经存在类似的问题,我只是想不出如何很好地表达我的问题。

以下是我迄今为止尝试过的不正确的方法:

gcc src/**/*.cpp -I include

注意:我仍然需要能够在命令末尾附加额外的 -I <folder> 以正常方式包含文件。

没有神奇的编译器选项可以做你想做的事。

解决方案 1:将 #include 指令更改为相对于包含目录。

解决方案 2:不要使用单独的目录并将 headers 移动到 src 目录。