Sé que se supone que para cualquier lugar de librerías externas bajo las «bibliotecas» de la carpeta de arduino directorio, pero tengo un proyecto que utiliza varias bibliotecas que he creado para el proyecto y sobre todo para mantener todo ese código autónomo y de los principales inhibidores de la pde archivo. Sin embargo, he tratado de colocar las bibliotecas en el mismo directorio que el principal PDE archivo, de modo que es más fácil mantener todo sincronizado en subversion (yo trabajo en esto en varios equipos) y no quiero tener que ir y la sincronización de las bibliotecas por separado. También, por el simple hecho de ser capaz de fácilmente zip de la carpeta del sketch y saber que contiene todo lo que necesita.

He intentado añadir los archivos de encabezado para el dibujo como una nueva pestaña, pero que no parece funcionar del todo… incluso no importa si se debe en el arduino IDE.

También he intentado añadir las bibliotecas para el boceto de directorio en subdirectorios (lo que sería de gran prefiere) y, a continuación, vincular a ellos como:

#include "mylib/mylib.h"

y

#include <mylib/mylib.h>

Pero ambos de estos resultados en archivo no encontrado errores.

Es esto posible? Y, si es así, ¿cómo se incluyen en el archivo principal de un edificio? De preferencia en sus propios subdirectorios.

InformationsquelleAutor Adam Haile | 2011-01-16

9 Comentarios

  1. 15

    He tenido el mismo problema. Solucionado lo de Arduino IDE > 1.8. Parece una especialidad en las nuevas IDEs (?) de acuerdo a la referencia (ver enlace de abajo).

    Tienes que añadir un «src» Subdirectorio antes de la creación de una carpeta de la biblioteca. Así que, esencialmente, el proyecto debería tener este aspecto:

    /SketchDir (with *.ino file)  
    /SketchDir/src  
    /SketchDir/src/yourLib (with .h and .cpp file)  

    y, finalmente, en su croquis de referencia:

    #include "src/yourLib/yourLib.h"  

    lo contrario, en mi caso, si me falta el «src» de la carpeta me sale el mensaje de error de que no encuentra el yourLib.cpp archivo.

    Nota: estoy usando un sistema windows en caso de que se diferencia y en realidad VS Código como contenedor para Arduino IDE. Pero ambos IDE compilarlo con esta estructura.

    Referencias:
    https://forum.arduino.cc/index.php?topic=445230.0

    • Trabaja en 1.8.7.
    • ¿alguien consigue este modelo de trabajo con las bibliotecas que incluyen cada uno de los otros? Estoy usando ESPAsyncWiFiManager para ESP32, y depende de otra biblioteca ESPAsyncWebServer. Que no la vas a encontrar, y yo preferiría no alterar la tercera parte de los archivos de código.
  2. 9

    Para los bocetos que tengo, el "*.h" y "*.cpp" los archivos de la biblioteca en realidad residen en la misma carpeta que el boceto, y yo los llamo como "someheader.h". También me di cuenta de que si me voy a sketch menú y add file... que el archivo no aparece hasta que cierre y vuelva a abrir el dibujo.

    • Si los tienes en la misma carpeta, puedes incluirlos como #include "libName.h". Pero las costuras tienen que volver a cargar el IDE antes de compilar el código.
    • eso suena mal, pero al parecer no quiere la cosa.
  3. 8

    Estoy de acuerdo con usted, esto es intolerable forma de desarrollar software: se requiere que cada archivo que usted necesita para estar en el mismo directorio que el programa principal!

    Para evitar esto, yo uso make poner juntas en una sola .h archivo de mi .h y .cpp fuentes – usted puede ver esto en este Makefile:

    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 [email protected]

    Arduino es muy exigente sobre el archivo terminaciones – si pones un .cpp o .cc archivo en su directorio se utiliza automáticamente en la fuente, y usted no puede incluir nada que no .cpp, .cc o .h – así que esta es la única forma de hacerlo.

    Yo uso un truco similar también para poner juntos los archivos JavaScript aquí.

    Esto requiere que se ejecute make después de la edición de sus archivos, pero desde que estoy usando un editor externo (Emacs) de todos modos, esto es igual a cero molestia para mí.

  4. 4

    Lamentablemente el Arduino IDE es horrible y no muestra signos de mejora. No existe un verdadero sistema de construcción de modo que sólo se le permite construir programas que residen en un único directorio.

    La única solución real es escribir un archivo makefile, entonces usted puede utilizar un real IDE. Tengo la esperanza de que un día alguien va a escribir un Arduino plugin para QtCreator.

    He aquí un ejemplo de makefile:

    http://volker.top.geek.nz/arduino/Makefile-Arduino-v1.8

  5. 3

    Yo sólo tenía este mismo problema (también me gusta mantener el código autónomo), así que sólo voy a apuntar algunas notas; dicen que tengo un MyPdeSketch.pde utilizando MyLibClass.cpp; entonces la tengo organizada como este

    /path/to/skdir/MyPdeSketch/MyPdeSketch.pde
    /path/to/skdir/MyPdeSketch/MyLibClass/MyLibClass.cpp
    /path/to/skdir/MyPdeSketch/MyLibClass/MyLibClass.h

    (En principio, /path/to/skdir/ aquí es equivalente a ~/sketchbook/)

     

    Lo que funcionó para mí es algo así como:

    mkdir /path/to/arduino-0022/libraries/MyLibClass
    ln -s /path/to/skdir/MyPdeSketch/MyLibClass/MyLibClass.* /path/to/arduino-0022/libraries/MyLibClass/

    Después de reiniciar el IDE, MyLibClass debe mostrar en «Croquis/Biblioteca de Importación».

    Tenga en cuenta que la única manera que puedo ver tan lejos para una biblioteca de archivo de clase para hacer referencia a otros archivos de la biblioteca es incluir relativamente (de «ubicación actual»), suponiendo que todos ellos están en la misma principales arduino-0022/libraries carpeta (posiblemente relacionadas con la Pila de Desbordamiento pregunta: Es posible incluir una biblioteca de otra biblioteca usando el Arduino IDE?).

    De otra manera, también debe ser posible para un enlace simbólico a la MyLibClass directorio directamente en arduino-0022/libraries (en lugar de manualmente haciendo un directorio y, a continuación, crear enlace simbólico para los archivos). Por la misma razón, crear enlace simbólico para la ubicación alternativa ~/sketchbook/libraries también podría ser problemático.

    Por último, posiblemente el mejor organización podría ser:

    /path/to/skdir/MyLibClass/MyLibClass.cpp
    /path/to/skdir/MyLibClass/MyLibClass.h
    /path/to/skdir/MyLibClass/MyPdeSketch/MyPdeSketch.pde

    … que, después de crear enlace simbólico para que libraries, obligaría a MyPdeSketch para mostrar bajo los ejemplos para la MyLibClass biblioteca en Arduino IDE (sin embargo, puede no ser aplicable si usted quiere auto-contienen clases múltiples carpetas en un solo directorio).

    EDIT: o, simplemente, utilizar un Makefile – la cual trabajaría directamente con avr-gcc, sin pasar por el Arduino IDE (en cuyo caso, el cuaderno de bocetos de la organización de archivos puede ser un poco flojos)..

  6. 1

    Creo saber qué necesitas exactamente.

    usted tiene una carpeta de proyecto de decir MYPROJ_FOLDER y desea incluir un Bibliotecas carpeta que contiene más niños carpetas de bibliotecas personalizadas.

    usted necesita hacer lo siguiente:
    1 – crear carpetas de la siguiente manera:

    -MyProjFolder
    -MyProjFolder/MyProjFolder        

    y, a continuación, cree un archivo con el nombre de la carpeta en .ino extensión
    -MyProjFolder/MyProjFolder/MyProjFolder.ino

    2 – crear carpeta de bibliotecas:
    -MyProjFolder/libraries <<<<< nombre no es una opción que debería ser llamado así.

    3 – a continuación, crear sus propias bibliotecas
    -MyProjFolder/bibliotecas/lib1
    -MyProjFolder/libraries/lib1/lib1.cpp
    -MyProjFolder/bibliotecas/lib1/ejemplos <<<< esta es una carpeta
    -MyProjFolder/bibliotecas/lib1/ejemplos/ejemplo1

    repita el paso 3 tanto como usted desea

    también comprobar http://arduino.cc/en/Guide/Libraries

  7. 0

    Lo que ha funcionado para mí es crear un directorio, por ejemplo, «src» bajo el boceto de directorios, y en virtud de que un dir para cada personal de la biblioteca.

    Ejemplo:

    Tengo un proyecto llamado ObstacleRobot, en virtud de que una carpeta de mi boceto, denominado obstaclerobot (creado automáticamente por el IDE) y de ahí mi sketch «obstacleRobot.ino»

    Hasta ahora tenemos:

     /ObstacleRobot
        /obstaclerobot
           obstacleRobot.ino

    Entonces yo quería incluir una biblioteca personal que estaba totalmente relacionado con este proyecto y no tenía ningún sentido en el que se incluya en el IDE de bibliotecas, y de hecho quiero hacer esto para cada parte del robot, pero todavía estoy trabajando en ello.

    Lo que al final funcionó para mí fue:

     /ObstacleRobot
        /obstaclerobot
           obstacleRobot.ino
           /src
              /Sonar
                 Sonar.h
                 Sonar.cpp

    Entonces, lo que tienes que hacer en el principal del sketch es escribir la incluyen como sigue:

    #include "src/Sonar/Sonar.h"

    Y eso es todo.

  8. -1

    Siguiendo las líneas de Hefny, que su proyecto sea un ejemplo para su biblioteca.

    Por ejemplo (Unix env), digamos que las bibliotecas están en ~arduino/bibliotecas

    Su crear su proyecto ~arduino/bibliotecas/MyProject, sus bibliotecas de ir allí (por ejemplo ~/arduino/bibliotecas/Miproyecto/module1.h ~/arduino/libraries/MyProject/module1.cpp ~/arduino/bibliotecas/Miproyecto/modulo2.h ~/arduino/libraries/MyProject/module2.cpp

    Ahora:
    mkdir -p ~arduino/bibliotecas/Miproyecto/ejemplos/myproj

    editar ~arduino/bibliotecas/Miproyecto/ejemplos/myproj/myproj.ino
    (tenga en cuenta que esto no es ejemplos/myproj.ino pero ejemplos/myproj/myproj.ino)

    Reiniciar el IDE, usted debe encontrar a su proyecto en el menú Archivo/Ejemplo/Miproyecto.

    También tenga en cuenta que la incluyen con #include

  9. -3

    ¿Por qué no se acaba de escribir una secuencia de comandos con un solo comando de copia, copia de nuestro libs desde donde nuestra biblioteca se encuentra en el arduino IDE de la carpeta de la biblioteca?

    De esta manera podemos mantener la estructura del archivo que queremos y el uso de la IDE de la biblioteca de requisitos sin problemas.

    Algo como esto funciona para mí:

    cp -r mylibs/* ~/Documents/programs/arduino-1.5.8/libraries/.

    Tenga en cuenta que las rutas son relativas a mi propia estructura de archivos.

    Espero que esto ayude a alguien. Esto incluye mi futuro auto que apuesto a que va a estar leyendo esto en un futuro cercano… como de costumbre!

    J

Dejar respuesta

Please enter your comment!
Please enter your name here