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

时间:2013-02-20 14:16:48

标签: 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>

显然这是错误的,因为IDE包含库文件夹的方式。我还应该尝试什么?我可以将Extra文件夹拆分为另一个“Library”(另一个文件夹),但这不是我想要的。

编辑:这是我收到的错误undefined reference to 'font8x8'。这在Extra/SomeNiceFunctions.h中定义。

4 个答案:

答案 0 :(得分:2)

不要使用

#include <MyLib.h>
#include <Extra/SomeNiceFunctions.h>

改为使用

#include <arduinolib.h>
#include "MyLib.h"
#include "Extra/SomeNiceFunctions.h"

使用尖括号,编译器在标准文件夹中查找包含文件。您希望自定义文件位于工作目录中。

答案 1 :(得分:0)

关于包含Arduino / Energia子文件夹中的Arduion / Energia库: 查看主要包含文件的位置(例如arduino.h / energia.h),然后使用.. \或向下进入目录结构,直到找到要包含的所需h文件。 例如。 我有: ..hardware \核心\ cc3200 \ energia.h ..hardware \库\ SPI \ spi.h中

为了在.cpp文件中使用SPI.h函数,我必须添加: #include <energia.h> 其次是 #include <..\..\libraries\SPI\SPI.h

答案 2 :(得分:0)

我遇到了一些问题。我只是想要一个简单的解决方案,而在CPP中编写库是正确的方法 - 我拿了一个草图 - 比如说robo.ino文件并将其添加到一个简单的库中 - 这样文件夹下的库中只有一个文件叫机器人 - robo.h

├── sketchesfolder
├── libraries
│   ├── robot
│   │   ├── robot.h
├── robotsketch
│   ├── Move.ino

现在在Move.ino中 - 我只包含文件

#include <robo.h>

您需要为简单函数添加的唯一内容是原型声明 - 或者确保首次使用时订购您的函数。

例如,将Setup()置于底部,并执行如下函数:

 void halt(int wait); 

作为robo.h文件头部的原型定义

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

答案 3 :(得分:-1)

借鉴this stack overflow question

  

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

尝试

// in myProject.ino
#include <arduinolib.h>
#include "MyLib.h"

// in Mylib.h
#include "./extra/SomeNiceFunctions.h"