#include 找不到文件,而 Visual Studio 自动完成建议可以找到文件

#include not finding files while the Visual Studio autocomplete suggestions can find the files

我正在尝试包含 Glad(由 here 和 GL3.3 api 生成(与 GLFW 也有类似的包含问题))这样

#include <glad/glad.h>

我觉得这应该可行,因为我在项目中有额外的文件包含目录

vendor\Glad\include

我的 VS 解决方案的文件结构为

-solutionName
--projectName
---src
----projectname.h <- Where I am including from for now, latter I want to include from elsewhere under the src directory.
---vendor (same level as src)
----Glad
-----include
------glad
-------glad.h
------KHR
-------khrplatform.h

通过将文件包含为

,我已经能够使包含工作
#include <../vendor/Glad/include/glad/glad.h>

但是当我这样做时我得到一个错误(“C1083”“无法打开包含文件:'KHR/khrplatform.h':没有这样的文件或目录”)因为 glad.h 中的包含找不到khrplatform.h 当它像这样包含时

#include <KHR/khrplatform.h>

我可以更改 glad.h 中的那一行,但我真的不想必须更改库的代码才能使我的工作正常进行。

这也发生在 GLFW 中,它具有镜像附加包含目录和文件路径,但很高兴在适用的情况下替换为 GLFW。

另外Visual studio将提供

<glad/glad.h>

文件路径作为建议,当我在 projectName.h 中输入包含行时,但我仍然收到错误“C1083”“无法打开包含文件:'glad/glad.h':没有这样的文件或目录".

另一个怪癖是我在附加包含目录中使用 spdlog 文件

vendor\spdlog\include

并且我能够将 headers 包含在 src 目录中:

#include <spdlog/spdlog.h>

哪个有效但不会抛出问题。

这个的文件结构是

-solutionName
--projectName
---src
----Utilities
-----Logger.h <- Where I am including from.
---vendor (same level as src)
----spdlog
-----include
------spdlog
-------spdlog.h <- file I am including just fine.

这让人感觉好像只有一些额外的包含目录在实际工作,我不确定为什么会发生这种情况,或者在花了几个小时猜测和检查后我该如何修复它。我想包括

这样的库
#include <glad/glad.h>
#include <GLFW/glfw3.h>

我怎样才能完成这项工作?

感谢您的宝贵时间, -迈克尔

使用 "glad/glad.h" 而不是 <glad/glad.h>

对于尖括号,编译器仅搜索包含的标准路径,对于引号,它还会搜索您定义的其他包含路径。

好吧,所以我终于想通了,我对我不得不这样做的方式不满意,但我想它可行,所以我会继续前进,除非有人提出建议。所以,问题归结为我将 headers 包含在我制作的静态库中,然后在其他地方使用该静态库。 (我没有意识到这是一个问题,否则我会在我原来的问题中提到这一点,对不起大家。)我通过 header 包含了我的库,其中包含我想要访问的所有依赖项以及以后这些第 3 方静态库将 git 越来越抽象,但目前我必须做的是告诉我的其他“沙盒”(非库)项目也有额外的包含目录,如

$(SolutionDir)MyLibName\vendor\Glad\include

$(SolutionDir)MyLibName\vendor\GLFW\include

理想情况下,我不想包含除 MyLib 之外的任何内容,但我想这是我目前的解决方法。感谢所有提出建议的人!