Come gestire le dipendenze?


9

Voglio includere una dipendenza come la registrazione . Sulla sua pagina dice:

  • Scarica il file zip
  • Metti la cartella Registrazione in "librerie \".

Non voglio credere (con una mentalità Maven) che questo è il modo in cui gestiamo le dipendenze nei progetti Arduino. Ciò significa che chiunque verifichi il mio pacchetto dovrebbe ripetere tali passaggi localmente (o includete "librerie \" nel controllo versione) Qual è la migliore pratica per la gestione delle dipendenze?


No, è quello che fanno tutti.
Codice Gorilla,

Le biblioteche sono le biblioteche. Questo non è Maven. Questo è Arduino. È semplicistico in modo che le persone senza conoscenza dei microcontrollori possano far lampeggiare un LED. Se si desidera strutture IDE reali, utilizzare un IDE reale.
Majenko

1
Bene, sto usando il primo hit in Google per Arduino IDE, ma questo non mi aiuta con le dipendenze. Fare un lampeggio a LED non richiede una libreria e sono d'accordo che le cose dovrebbero essere semplici. Questo è il motivo per cui chiedo la gestione delle dipendenze.
Markus Malkusch

Cerca invece IDE C ++ o IDE G ++. E percrosscompiling
gilhad

Risposte:


6

Arduino è pensato per essere un modo semplice per persone non tecniche e quindi si nasconde il più possibile dalla semplice vista per essere semplice.

Per un semplice progetto funziona a spese di copiare le librerie qua e là e usando "IDE" di Arduino. Chiamare i programmi "schizzi" e manipolarlo per nasconderlo, che è in C ++. E così via e così via.

Se vuoi realizzare progetti più complicati, controllo della versione, buon ambiente e simili, devi abbandonare "semplicemente Arduino Way" e iniziare a utilizzare strumenti più potenti e complicati.

Personalmente uso https://github.com/sudar/Arduino-Makefile https://github.com/ladislas/Bare-Arduino-Project e l'ho nei repository GIT.

In questo modo posso condividere le librerie tra progetti in gruppo, anche collegamenti a librerie al di fuori della struttura ad albero, nonché gits submodules, entrambi che consentono di avere librerie aggiornate di terze parti disponibili per tutti i progetti, anche quelli vecchi.

Uso ancora molto Arduino (come setup / loop, digitalRead e simili), ma uso anche costrutti g ++ "normali". Più tardi divergerò ancora di più con il semplice codice C / g ++ / .. probabilmente, usando qualche RTOS o giù di lì, ma ora le mie esigenze non sono ancora così lontane. (google "arduino rtos" Sto attualmente leggendo https://github.com/greiman/NilRTOS-Arduino )

Arduino non vuole essere comunque la "migliore pratica". È pensato per essere "un modo semplice e veloce per fare qualcosa, quando non sai nulla". E funziona, dato che chiunque e il suo cane possono iniziare con Arduino e, se interessati, può andare più lontano da solo, o può restare facile e divertirsi comunque.


1

Se si desidera che il progetto sia autonomo, è possibile inserire le dipendenze della libreria nella cartella dello schizzo. Quindi la struttura delle cartelle dello schizzo di Foo con la dipendenza della libreria Logging sarebbe simile a questa:

Foo
|_Foo.ino
|_src
  |_Logging
    |_Logging.h
    |_Logging.cpp

E in Foo.ino includerai la libreria in questo modo:

#include "src/Logging/Logging.h"

Sfortunatamente alcune librerie usano la sintassi include errata che funziona ancora quando la libreria è installata in una delle cartelle delle librerie ma non quando si trova nella cartella dello schizzo. La libreria di registrazione utilizza la sintassi di inclusione corretta, ma a volte per mettere le librerie nella cartella dello schizzo è necessario risolverlo. Ad esempio, supponiamo che tu abbia una libreria chiamata Bar e in Bar.cpp vedi questo:

#include <Bar.h>

Non funzionerà perché se installato nella cartella dello schizzo Bar.h non si troverà in uno dei percorsi include standard, quindi è necessario modificare Bar.cpp e cambiare la sintassi include in:

#include "Bar.h"

Ciò provocherà la ricerca della cartella locale per il file incluso.

L'aspetto negativo di questo sistema è che potresti finire con più copie di una libreria, quindi è più lavoro aggiornare o modificare ogni copia. Naturalmente questo può anche essere un vantaggio perché ogni progetto può avere la propria versione funzionante della libreria che non sarà influenzata da eventuali aggiornamenti che si possono apportare alla stessa libreria utilizzata in altri progetti.

In genere aggiungo solo istruzioni su come installare le dipendenze delle librerie nel solito modo alla documentazione di un progetto. Ciò dovrebbe rientrare nelle capacità dell'utente medio di Arduino. Se è necessaria una versione specifica di una libreria, la documentate. Tuttavia, ci sono casi in cui ho voluto consegnare un progetto autonomo a qualcuno che non ha familiarità con l'uso dell'IDE di Arduino e cioè quando ho usato il sistema sopra descritto per tutte le librerie di terze parti necessarie.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.