C++包含完整路径

tgy*_*tgy 11 c++ include include-path

我发现#include "../app/thing.h"非常难看,我希望能够从我的项目的主根导入,如下所示:

#include <project/app/submodule/thing.h>

(我知道<>通常用于外部,但我发现它更清洁)

我怎样才能在项目的任何地方做到这一点?

Jon*_*ler 5

您只需要确保您的构建过程设置了一个选项来指定搜索的起点。

例如,如果您的标题位于:

/work/username/src/project/app/submodule/thing.h
Run Code Online (Sandbox Code Playgroud)

那么你需要包括(假设一个符合 POSIX 的编译器;AFAICR,甚至 MSVC/I用作模拟-I):

-I/work/username/src
Run Code Online (Sandbox Code Playgroud)

作为编译器选项之一。您可以在项目的任何位置使用该路径,因为它是绝对路径。您只需要一种定义的方式让您的构建系统知道应该是什么设置,这样当它移动到 时/home/someone/src/,您只需更改一个设置。