如何设置include相对于源文件从根路径的相对性?
How to set includes to be relative to the relativity of the source file from the root path?
抱歉,如果我对问题的措辞有点混乱:
如何设置include相对于源文件从根路径的相对性?
我正在尝试编译一个 C++ 项目(不是我自己的),并且有两个文件夹:src
和 include
。
.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 目录。
抱歉,如果我对问题的措辞有点混乱:
如何设置include相对于源文件从根路径的相对性?
我正在尝试编译一个 C++ 项目(不是我自己的),并且有两个文件夹:src
和 include
。
.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 目录。