Ada*_*ile 43 c c++ header arduino
我知道你应该在arduino安装目录的"libraries"文件夹下放置任何外部库,但我有一个项目,它使用我为项目创建的几个库,主要是为了保持所有代码自包含和出来主要的pde文件.但是,我试图将库放在与主PDE文件相同的目录中,以便我可以更容易地将所有内容保存在subversion中(我在多台计算机上处理这个)并且我不想继续返回并分别同步库.此外,只是为了能够轻松拉链草图文件夹,并知道它包含它需要的一切.
我已经尝试将标题文件添加到草图中作为新选项卡,但这似乎根本不起作用...甚至不关心它们是否应该在arduino IDE中.
我也尝试将库添加到子目录中的sketch目录(我更喜欢),然后链接到它们:
#include "mylib/mylib.h"
Run Code Online (Sandbox Code Playgroud)
和
#include <mylib/mylib.h>
Run Code Online (Sandbox Code Playgroud)
但这两个都导致文件未找到错误.
这可能吗?如果是这样,我如何将它们包含在主文件中进行构建?最好在他们自己的子目录中.
Uwe*_*ner 15
我遇到过同样的问题.为Arduino IDE解决了它> 1.8.根据参考资料(参见下面的链接),似乎是较新的IDE(?)的专长.
您必须在创建库文件夹之前添加"src"子目录.所以基本上你的项目应该是这样的:
/SketchDir (with *.ino file)
/SketchDir/src
/SketchDir/src/yourLib (with .h and .cpp file)
Run Code Online (Sandbox Code Playgroud)
最后在你的草图中你参考:
#include "src/yourLib/yourLib.h"
Run Code Online (Sandbox Code Playgroud)
否则在我的情况下 - 如果我错过了"src"文件夹 - 我收到错误消息,它找不到yourLib.cpp文件.
注意:我正在使用Windows系统,以防它不同,实际上VS Code作为Arduino IDE的包装器.但是这两个IDE都用这种结构编译它.
参考文献:https: //forum.arduino.cc/index.php?topic = 445230.0
对于我的草图,"*.h"和"*.cpp"库文件实际上与草图位于同一个文件夹中,我称之为"someheader.h".我还注意到,如果我进入sketch菜单并且add file...文件没有出现,直到我关闭并重新打开草图.
我同意你的看法; 这是开发软件的一种无法容忍的方式:它需要您需要的每个文件都与主程序位于同一目录中!
为了解决这个问题,我使用来自我和源make的单个.h文件- 你可以在这个Makefile中看到这个:.h.cpp
PREPROCESS=gcc -E -C -x c -iquote ./src
# -E : Stop after preprocessing.
# -C : Don't discard comments.
# -x c : Treat the file as C code.
# -iquote ./src : Use ./src for the non-system include path.
TARGETS=sketches/morse/morse.h
all: $(TARGETS)
clean:
rm $(TARGETS)
%.h: %.h.in
$(PREPROCESS) $< -o $@
Run Code Online (Sandbox Code Playgroud)
Arduino是有关文件的结局很挑剔-如果你把一个.cpp或.cc文件在其目录下它会自动使用它的来源,你可以不包括任何不是一个.cpp,.cc或者.h-所以这是要做到这一点的唯一途径.
我使用了类似的伎俩也到JavaScript文件放在一起在这里.
这需要你make在编辑文件后运行,但是因为我正在使用外部编辑器(Emacs),这对我来说是麻烦.
不幸的是,Arduino IDE 很糟糕,并且没有任何改进的迹象。没有真正的构建系统,因此它只允许您构建驻留在单个目录中的程序。
唯一真正的解决方案是编写一个 makefile,然后您就可以使用真正的 IDE。我希望有一天有人能为 QtCreator 编写一个 Arduino 插件。
下面是一个 makefile 示例:
http://volker.top.geek.nz/arduino/Makefile-Arduino-v1.8
| 归档时间: |
|
| 查看次数: |
37722 次 |
| 最近记录: |