C++ 在Arduino库的文件夹中包含文件

C++ 在Arduino库的文件夹中包含文件,c++,arduino,C++,Arduino,我目前正在编写一个Arduino库,我想在库文件夹的子目录中包含文件。更具体地说,我希望这些文件可以从Arduino草图中访问 这是我的目录结构: MyLib/MyLib.cpp MyLib/MyLib.h MyLib/Extra/SomeNiceFunctions.cpp MyLib/Extra/SomeNiceFunctions.h 这就是我试图包含该文件的方式: #include <MyLib.h> #include <Extra/SomeNiceFunctions.h

我目前正在编写一个Arduino库,我想在库文件夹的子目录中包含文件。更具体地说,我希望这些文件可以从Arduino草图中访问

这是我的目录结构:

MyLib/MyLib.cpp
MyLib/MyLib.h
MyLib/Extra/SomeNiceFunctions.cpp
MyLib/Extra/SomeNiceFunctions.h
这就是我试图包含该文件的方式:

#include <MyLib.h>
#include <Extra/SomeNiceFunctions.h>
#包括
#包括
显然,这是错误的,因为IDE包含库文件夹的方式。我还应该尝试什么?我可以将额外的文件夹拆分为另一个“库”(另一个文件夹),但这不是我想要的

编辑:这是我得到的对“font8x8”的
未定义引用的错误。
。这是在
Extra/somenice函数中定义的。h

不使用

#include <MyLib.h>
#include <Extra/SomeNiceFunctions.h>
#包括
#包括
改用

#include <arduinolib.h>
#include "MyLib.h"
#include "Extra/SomeNiceFunctions.h"
#包括
#包括“MyLib.h”
#包括“Extra/SomeNiceFunctions.h”
编译器使用尖括号在标准文件夹中查找包含文件。您希望自定义文件位于工作目录中。

包含路径包括草图的目录,即目标目录 (/hardware/core//)和avr包含目录 (/hardware/tools/avr/avr/include/)以及任何库目录 (在/hardware/libraries/)中),其中包含 包含在主草图文件中

试一试

//在myProject.ino中
#包括
#包括“MyLib.h”
//在Mylib.h中
#包括“/extra/SomeNiceFunctions.h”

关于包括Arduino/Energia子文件夹中的Arduion/Energia库: 查看主包含文件的位置(例如arduino.h/energia.h),然后在目录结构中使用..\或向下移动,直到找到想要包含的h文件。 如。 我有: …硬件\cores\cc3200\energia.h ..硬件\库\SPI\SPI.h

为了在.cpp文件中使用SPI.h函数,我必须添加:
#包括
然后
#include我对此有些意见。我只是想要一个简单的解决方案,而在CPP中编写一个库是正确的方法——我制作了一个草图——比如robo.ino文件,并将其添加到一个简单的库include中——因此库中只有一个文件位于名为Robot-robo.h的文件夹下

├── sketchesfolder
├── libraries
│   ├── robot
│   │   ├── robot.h
├── robotsketch
│   ├── Move.ino
现在在Move.ino中,我只包含了这个文件

#include <robo.h>
作为robo.h文件开头的原型定义


它允许您将草图作为公共代码共享,而无需将其转换为CPP库。但是你当然应该这样做。

所有文件都在我的Arduino库文件夹中,而不是在sketch文件夹中,但你是对的!这就是我得到的信息:
未定义对“font8x8”的引用
。font8x8是在
someniceffunctions.h
中定义的。如果我简单地将所有文件复制到主库文件夹中,一切都正常工作。您是否也包括arduino特定的标题?您正在链接库吗?是的,如果我将每个文件都放在主库文件夹中(
SomeNiceFunctions.h
SomeNiceFunctions.cpp
中的
MyLib
),则一切正常。我的猜测是IDE在库文件夹中的每个文件夹中查找
.h
文件,而不是在这些文件夹中的文件夹中。我希望这是有道理的!尝试使用尖括号包含arduino库,就像我在文章中编辑的那样。“SomeNiceFunctions.h”不会自动包含,因为它位于库文件夹中的子文件夹中。在最后一句中,它指定标题需要包含在主草图文件中。您是否尝试将标题添加到主草图中?您是否尝试过在MyLib.h中包含一些函数?
#include <robo.h>
 void halt(int wait);