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

问题描述

我在使用 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" 并选择“转到引用”,它会将我带到配置文件,或者我可以在输入 config.h 时“Tab”自动完成,它也能成功。所以它知道头文件存在。为什么链接器找不到它?

任何帮助将不胜感激。 谢谢

解决方法

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

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

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