我的文件夹结构如下
Documents\Arduino\MySketch\
MySketch.ino
libraries\
Timer\
Timer.h
Timer.cpp
我收到以下错误
fatal error: Timer.h: No such file or directory
#include <Timer.h>
请注意,如果我将库移到 C:\ Program Files(x86)\ Arduino \ libraries 文件夹中,则此方法很好用,但是我真的不想让它们脱离我的视线源,因为我无法将它们检查到我的git存储库中。
我认为我严格按照本教程中给出的说明进行操作。我只是在谷歌上搜索,发现了一些类似的问题,但没有解决方案。应该可以在最新版本的IDE中使用(我在Windows 10上是1.8.5)。
我也尝试使用双引号而不是尖括号来包含库,但是出现了相同的错误。
能否让我知道如何解决此问题?
谢谢
答案 0 :(得分:0)
最新版本的Arduino IDE可以对Sketch文件夹的src
子文件夹进行递归编译。因此,要实现您的目标,您将需要一个类似于以下内容的文件夹结构:
MySketch
|_MySketch.ino
|_src
|_Timer
|_Timer.h
|_Timer.cpp
然后,草图中的#include
指令应如下所示:
#include "src/Timer/Timer.h"
Arduino库在内部#include
指令中使用不正确的语法是很常见的。例如,Timer.cpp可能包含以下行:
#include <Timer.h>
在正常安装库后,这不会引起问题,但是当您尝试使用与草图捆绑在一起的库时,它将导致错误。解决方案是编辑库以使用正确的语法:
#include "Timer.h"
答案 1 :(得分:0)
在我看来,如果仅此草图使用库/计时器,则解决方案看起来不错。如果您有多个项目{git_repo} / sketch_ {n} / sketch_ {n} .ino调用同一类Timer(.h,.cpp),该怎么办?
如果您想避免代码重复(可以这样做),则可以将其放入{git_repo} / libraries /中。您仍然可以将它们检入git。但是,这很痛苦,因为它要求每次将一个文件修改到库中时,都需要:
非常痛苦。
您可以做的是从{git_repo} / libraries / your_library创建符号链接到C:\ Program Files(x86)\ Arduino \ libraries \ your_library
在Ubuntu上可能是:
cd ~/Arduino/libraries/ # where Arduino stores the libs
rm -rf Timer/ # deleting your library if exists
ln -s ~/dev/code/[MY_PROJECT]/libraries/Utils/Timer Timer
如果在之间修改了Timer。{h,cpp}(来自git_repo),则Arduino IDE将知道您的库存在,并会自动重新编译它。