当文件明确存在时,PIO 编译器说没有这样的文件或目录

PIO compiler says no such file or directory when file clearly exists

我在使用 VScode 的 PlatformIO 扩展中遇到“没有这样的文件或目录”问题已经有一段时间了,而在 Visual Studio 中从来都不是问题。 (不是 VScode)

我的项目设置如下:

MyProject
|--include
|  |--config.h
|--lib
|  |--LibraryA
|  |  |--libraryA.h
|  |  |--libraryA.cpp
|  |--LibraryB
|  |  |--libraryB.h
|  |  |--libraryB.cpp
|--src
|  |--main.cpp

现在,如果我在 main.cpp 中包含 config.h,一切都很好。 但是 如果我在 LibraryA/B.h 或 LibraryA/B.cpp 中包含 config.cpp,我会得到“没有这样的文件或目录”编译错误。

这是为什么?如果我右键单击 #include "config.h" 和 select“转到参考”,它会将我带到配置文件,或者我可以在输入 config.h 时“Tab”自动完成,它也能成功完成。所以它知道头文件存在。为什么链接器找不到它?

如有任何帮助,我们将不胜感激。 谢谢

我终于找到了解决办法。 src 和 include 文件夹中的所有文件都不是全局的。链接器无法知道这些文件的存在,即使智能感知(与链接器不同——与编译器不同)知道它的引用。

要解决此问题,请将以下行添加到 platform.ini 文件中。 build_flags = -I include

这将使包含文件夹的内容可见