utilizada una ser puede librerias libreria las invalida guardan encontrada eliminar donde desinstalar como borrar c++ ide include arduino

c++ - ser - ¿Es posible incluir una biblioteca de otra biblioteca utilizando el IDE de Arduino?



libreria en arduino (5)

Estoy intentando escribir una biblioteca Arduino (en realidad una clase C ++) que a su vez hace referencia a otra biblioteca que he instalado en el directorio ~ / Documents / Arduino /raries de mi Mac.

En la parte superior de la .cpp de la biblioteca que estoy escribiendo, lo he intentado

#include <ReferencedLibrary.h>

y

#include "ReferencedLibrary.h"

... ninguno de los cuales funciona. Puedo #include <ReferencedLibrary.h> éxito #include <ReferencedLibrary.h> de los bocetos en mi directorio ~ / Documentos / Arduino. ¿Me estoy perdiendo algo o es una limitación del IDE / makefile de Arduino? ¿Hay una solución?


Este problema se resolvió en la versión Arduino 1.6.6. Las notas de la versión 1.6.6 mencionan que las dependencias de biblioteca a biblioteca se han corregido.

Dependencias de biblioteca a biblioteca: cuando su bosquejo importe una biblioteca y esa biblioteca use otra, el IDE lo descubrirá sin que tenga que agregar un #include inútil a su bosquejo

Actualizar su versión a 1.6.6 o más reciente resolverá su problema.


He podido incluir una biblioteca en otra biblioteca de Arduino usando una ruta relativa. Por ejemplo, para incluir la biblioteca AbstractSwitch en la biblioteca DigitalSwitch, asumiendo que ambas bibliotecas viven en sus propias carpetas separadas dentro de la carpeta de la biblioteca estándar de Arduino, puede usar la siguiente declaración de inclusión:

#include "../AbstractSwitch/AbstractSwitch.h"

En otras palabras, su declaración de inclusión debe leer:

#include "../LibraryFolder/LibraryHeaderFile.h"


La documentación aquí http://www.arduino.cc/en/Hacking/BuildProcess indica:

La ruta de inclusión incluye el directorio del boceto, el directorio de destino (/ hardware / core //) y el directorio de inclusión de avr (/ hardware / herramientas / avr / avr / include /), así como cualquier directorio de bibliotecas (en / hardware / bibliotecas /) que contienen un archivo de encabezado incluido en el archivo de boceto principal.

Esto significa que si #include "ReferencedLibrary.h" de su archivo de boceto principal, esto hace que el directorio de libraries ese archivo se agregue a la ruta de inclusión para que otras bibliotecas lo incluyan. Un poco de un hack, pero funciona en mi Mac.


Método no recomendado: es posible agregar básicamente cualquier código de biblioteca externa a Arduino IDE build mediante el uso del archivo boards.txt. Encabezados en banderas c / cpp y bibliotecas en banderas ld. Esto puede ser útil para los desarrolladores de bibliotecas que usan herramientas externas (para mí el creador de cmake / QT hoy).

Modifiqué /home/pekka/arduino-1.8.5/hardware/teensy/avr/boards.txt agregando "/ coderoot" a gcc include path y E_OS_arduino define, modificando las líneas a continuación:

teensy36.build.flags.cpp = -fno-exceptions -felide-constructors -std = gnu ++ 14 -Wno-error = estrechamiento -fno-rtti -I / coderoot -DE_OS_arduino

teensy36.build.flags.c = -I / coderoot -DE_OS_arduino


Usando el entorno Arduino, como lo entiendo, no puedes acceder a tu propia biblioteca desde otra de tus bibliotecas. No hay forma de agregar rutas, por lo que simplemente no hay manera de que el compilador encuentre el código. Eso hace que sea difícil escribir bibliotecas que usen código en otra de sus bibliotecas. Mi investigación en la web indica que esto ha sido un problema durante años, pero que yo sepa no se ha resuelto. Sospecho que hay dificultades en los detalles de la implementación o tal vez el deseo de mantener el sistema simple a expensas de la capacidad.

Por supuesto, siempre puede cortar y pegar el código en cada nueva biblioteca, pero eso es extremadamente subóptimo. También puede escribir una enorme biblioteca con todo su código en un par de archivos .h y .cpp. Eso tampoco es muy satisfactorio, pero lo he hecho en alguna ocasión.

Sin embargo, existe una solución para el uso de bibliotecas estándar de Arduino en su propia biblioteca que está colocando en su directorio de cuaderno de bocetos / bibliotecas. Como los bocetos incluyen rutas a las ubicaciones de la biblioteca estándar y vinculan el código de la biblioteca estándar, puede incluir el archivo de encabezado de la biblioteca estándar de interés en su boceto. Debajo de eso, también en su boceto, incluya su propio archivo de encabezado de biblioteca. La biblioteca estándar estará disponible para su biblioteca, así como para su bosquejo.