Go Down

Topic: Indicare percorso alternativo di una libreria (Read 1 time) previous topic - next topic

cyberhs

So che è possibile indicare un percorso diverso per la libreria usate nell'include, ma non conosco bene la sintassi:

#include <libreria.h>     // libreria in directory "library"

#include "libreria.h"     // libreria in directory diversa (forse quella dello sketch?)

uwefed

ma vuoi avere la possibilitá che la libreria sia in uno o l' altro posto o chiedi i posti dove devono essere le librerie per le 2 possibilitá di sintassi del include?
Ciao Uwe

cyberhs

Ciao Uwe...

entrambe le cose: voglio imparare bene come funziona l'include.

leo72


cyberhs

Grazie Leo, ma avevo già letto la cosa.

Insomma, ho fatto delle prove, ma sembra che la cosa più semplice sia quella di inserire la libreria nella directory "libraries".

O forse mi sbaglio?

lesto

se usi
#include "asd"
il compilatore cerca nella cartella corrente (quindi quella dello sketch!) e poi in quelle <>

se usi <> cerca solo nelle cartelle predefinite (in ordine libraries, libraries nella cartella dell'IDE (Serial, Wire, etc...), librerie del compilatore)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

niki77

C'e da aggiungere che l'ide  Arduino in fase di compilazione le librerie le ficca tutte a spanello insieme, pertanto un include in un progetto Arduino non conterrà mai il path, ma solo il nome della libreria.
La cosa importante da sapere è su quali percorsi e con che precedenza vengono cercate le librerie.
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

lesto

ah già, quindi tutto il discorso <> e "" viene a decadere perchè tanto arduino fa un bel minestone di tutto!
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leo72


C'e da aggiungere che l'ide  Arduino in fase di compilazione le librerie le ficca tutte a spanello insieme,

Vero. Basta aprire un progetto e compilarlo, e poi andare a vedere nella cartella temporanea che gran calderone è stato creato  :smiley-yell:

lesto

ho già fatto la pull request per sistemare il fatto e rendere l'IDE compatibile con il vero C, il bello è che non ho praticamente mai visto librerie "custom" che usano la cartella "utility", e quindi il passaggio sarebbe trasparente all'utente finale, salvo rarissimi casi.

Invece ci sono 4 librerie standard dell'ide che bisogna aggiornare, ma anche in questo caso sono modifiche interne e quindi completamente trasparenti all'utente. Se volete rompere un pò le balle: https://github.com/arduino/Arduino/pull/116
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

niki77

Ciao lesto, hai effettuato le modifiche in oggetto?
Io l'ho fatto già da tempo ed ho riscontrato che comunque continuando ad usarle dall'ide originale quest'utlimo continua a compilare regolarmente.
Pensandoci bene mi è venuto pensato che questo comportamento però è un pò strano.
Tu che dici?
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

lesto

cioè modificando gli include per usare le sottocartelle la compilazione va a buon fine? questa è black magic :)
non so, se mi dici c he è così provo a darci un'occhiata.
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

niki77

Esattamente, come ti hod etto tempo fà, io uso eclipse al momento per arduino, e ho dovuto CORREGGERE i puntamenti degli include di alcune librerie, perchè sennò non compilava (ovviamente).
Il punto è che mi sono accorto che compilando nuovamente i vecchi progetti nell'ide originale (che utilizza le librerie con gli include modificati) queste vengono compilate correttamente.
Comunque ho notato che a seguito di compilazione su ide originale, nella cartella temporanea (.build) vengono incluse come al solito le librerie del core a spanello e vengono incluse anche le librerie esterne compilate (tipo ethernet eeprom e spi) con tutta la loro cartellina mantenendo la struttura originale.
Chizza che casso di ragionamenti fà l'ide in questo caso  :smiley-mr-green:
Mistero della fede!
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

astrobeed


Vero. Basta aprire un progetto e compilarlo, e poi andare a vedere nella cartella temporanea che gran calderone è stato creato  :smiley-yell:


Nella cartella temporanea ci vanno a finire tutti gli stadi intermedi della compilazione, non c'è nulla di strano, tutti i compilatori usano una cartella d'appoggio per questa cosa oppure lo fanno nella cartella del progetto se non è stato specificata una cartella dedicata.

niki77

I file intermedi è normale, ma in questo caso ci ficca pure i sorgenti del core.
Manon è questo il problema , quello che non si capisce è come fà a compilare indistintamente le librerie esterne sia esse abbiano gli include in formato originale (cosi come rilasciate da arduino) sia con gli include modificati(con percorsi relativi corretti).
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Go Up