使用具有非相对路径的 'include' 语句的 g++ 编译 (C++)

g++ compilation using 'include' statement with non-relative paths (C++)

我正在尝试使用 g++ 作为编译器使用第三方库编译 c++ 代码。 我的 main.cpp 需要包含头文件 core.hpp 而 core.hpp 需要包含 cvdef.h 而 cvdef.h 需要包含 interface.h.

include语句中这三个header的路径如下:

#include "opencv2/core.hpp"
#include "opencv2/core/cvdef.h"
#include "opencv2/core/hal/interface.h"

见下图中的文件结构。

当我编译 main.cpp 时,它找到了 core.hpp。然而,core.hpp 似乎无法找到 cvdef.h,因为它正在 'core' 文件夹中寻找 'opencv2' 文件夹(在下一级)。 在不更改 include 语句中的路径的情况下,我将如何处理?

我目前在Windows下使用g++的编译语句是:

g++ main.cpp -o main

OpenCV2 似乎想要在标准位置查找头文件。

您可以使用 -I(大写 i)选项添加到标准位置列表,指定要添加的路径。

在你的情况下,你应该可以用

g++ main.cpp -o main -Iopencv2/core