我正在编写一个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
中定义。
答案 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"