Arduino:包括库之间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino:包括库之间相关的知识,希望对你有一定的参考价值。
我想把IRLIB2包括在我的素描中。作为一个沙箱,我正在使用这个代码(没有包含编译就好了):
#include <IRLibAll.h>
void setup(){}
void loop(){}
IRLib2被打包成一组单独的库。其中有五个,都必须通过arduino库管理器单独安装。我已按照存储库中的说明进行操作。我的sketchbook文件夹现在看起来像这样:
这种布局给我带来了麻烦。 include语句生成以下错误消息:
/home/lhk/sketchbook/libraries/IRLib2/IRLibAll.h:22:0,
from sketch_mar04f.ino:1:
/home/lhk/sketchbook/libraries/IRLib2/IRLibDecodeBase.h:13:28: fatal error: IRLibProtocols.h: No such file or directory
compilation terminated.
缺少的IRLibProtocols.h位于IRLibProtocols库中。
这似乎是一个常见的问题:图书馆互相使用。在CMake中,我可以适当地设置包含目录,但是我能看到的唯一工具是arduino IDE中的“Add Library”对话框。
IRLibAll.h应该包含来自IRLib2的所有内容。也可以单独导入库,但这不能解决包含路径的问题。如何正确设置我的代码以包含相互引用的库?
我还在存储库中创建了一个issue:
Arduino IDE版本1.6.5-r5及更早版本通常要求您在草图中添加#include
指令以获取库依赖关系,以便Arduino IDE知道需要将哪些文件夹添加到包含路径。
因此,一种解决方案是将以下行添加到草图中:
#include <IRLibProtocols.h>
#include <IRLibRecv.h>
#include <IRLibRecvPCI.h>
#include <IRLibFreq.h>
在Arduino IDE 1.6.6中使用arduino-builder工具添加了一个改进的依赖扫描系统。使用任何最新版本的Arduino IDE,您的草图将在不添加任何其他#include
指令的情况下编译。
因此,更好的解决方案是更新到最新的Arduino IDE正式版。
由于[许可证文档问题[(https://github.com/arduino/Arduino/pull/2703),当您通过apt install arduino
等安装Arduino IDE时,您会得到一个非常过时的版本,这是一个相当于1.0.5的修改版本。您错过了过去4年中所做的所有改进。最好始终安装从https://www.arduino.cc/en/Main/Software下载的官方Arduino IDE。
以上是关于Arduino:包括库之间的主要内容,如果未能解决你的问题,请参考以下文章
Arduino与Proteus仿真实例-两个Arduino之间SPI通信仿真