我可以在 Arduino 的库文件夹之外安装库吗?

Can I install a library outside the library folder in Arduino?

本文关键字:安装 文件夹 Arduino 我可以      更新时间:2023-10-16

我正在和一个朋友一起做一个Arduino项目,我们需要2个外部库,OneWire和DallasTemperature。我可以轻松地将它们安装在我的计算机上,并且可以完全正常工作,但我实际上想将它们安装在我的 git 文件夹中,这样任何人都可以立即使用我的代码。我的文件夹结构如下:

project_folder/
> libraries/
> OneWire/
> OneWire.h and OneWire.cpp and so
> DallasTemperature/
> DallasTemperature.h and DallasTemperature.cpp and so
> project.ino

在头文件中,我不得不更改一些引用,主要是文件路径,所以#include <OneWire.h>变得#include "../OneWire/OneWire.h"等等,而且我没有收到任何错误。在我的project.ino中,我使用#include "libraries/OneWire/OneWire.h"#include "libraries/DallasTemperature/DallasTemperature.h"加载了两个库,它们似乎都可以工作,但是当我验证我的代码时,出现以下错误:

C:Users<my username>AppDataLocalTempccZFsuFb.ltrans0.ltrans.o: In function `global constructors keyed to 65535_0_project.ino.cpp.o.1999':
<artificial>:(.text.startup+0x5e): undefined reference to `OneWire::begin(unsigned char)'
<artificial>:(.text.startup+0x6a): undefined reference to `DallasTemperature::DallasTemperature(OneWire*)'
C:Users<my username>AppDataLocalTempccZFsuFb.ltrans0.ltrans.o: In function `setup':
C:Users<my username>Documents<project folder>/project.ino:13: undefined reference to `DallasTemperature::begin()'
C:Users<my username>AppDataLocalTempccZFsuFb.ltrans0.ltrans.o: In function `loop':
C:Users<my username>Documents<project folder>/project.ino:17: undefined reference to `DallasTemperature::requestTemperatures()'
C:Users<my username>Documents<project folder>/project.ino:19: undefined reference to `DallasTemperature::getTempCByIndex(unsigned char)'
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino Uno.

是否可以在我的项目文件夹中安装这些库,或者我真的必须在每个系统上单独安装它们?

是否可以在我的项目文件夹中安装这些库,或者我真的必须在每个系统上单独安装它们?

答案当然是肯定的,首先你需要一个IDE可以使相对包括

您可以将Arduino IDE更新为版本>= 1.6.10,并将文件夹重组为如下所示

|project_folder/
|>src/
|   |> OneWire/
|   |   > OneWire.h and OneWire.cpp and so
|   |> DallasTemperature/
|   |   > DallasTemperature.h and DallasTemperature.cpp and so
|> project.ino

然后将它们从您的草图中包括在内,如下所示

#include "src/OneWire/OneWire.h"
#include "src/DallasTemperature/DallasTemperature.h"

推荐选项

  • 使用任何其他IDE而不是Arduino IDE...我个人更喜欢 Atmel 工作室,您可以从官方网站免费下载 Atmel 工作室 本课展示了如何将 Arduino 草图转换为与 atmel studio 配合使用