Ciao,
vi presento la mia ultima creazione, fabbricata in serata mentre guardavo un filmetto (una settimana da dio )
Partendo dal presupposto che sono pigro, odio vedere mille file .cpp e .h nella mia cartella degli sketch. Sopratutto qunado il progetto inizia a diventare seriamente complesso la situazione si fa critica.
Purtoppo se infili i file .cpp e .h, a meno che non siano in una sotto-cartella "utility", e solo nel caso di librerie nella cartella libraries di distema o della sketcbook, il caro arduino IDE ignorerà completamente codesti file.
Qualcuno si ricorderà che in passato proposi un brutale hack, che in fase di compilazione copiava il contenuto delle sotto-cartelle nella directory principale.
Questo è lo stesso sistema che l'attuale arduino IDE usa per la cartella utility: ciò fa sballare gli include, in pratica anzichè dover fare
#include "utility/file.h"
si fa
#include "file.h"
perchè al momento dela compilazione i file sono in realtà tutti in una cartella temporanea senza sottocartelle.
Ma ciò provoca un grosso problema: se una delle cartelle (solo utility con l'IDE originale) conteneva un file con lo stesso nome di un altro file, allora l'ultimo file copiato sovrascriveva quello di partenza con conseguente errore di compilazione.
Non un grosso problema finchè le cartelle e i file sono pochi, ma pessima idea.
Ora, con la mia nuova modifica, la struttura di cartelle viene mantenta, e si riesce a compilare felicemente il codice.
Certo la include torna ad essere qulle vera, e quindi se usate una libreria come la Wire, Ethernet, SD, WiFi, o una qualsiasi altra libreria che contiene la cartella "utility", dovrete fare attenzione a sistemare tutti gli include. Per tutte le librerie di cui ho parlato, essendo incluse nell'ide, questa modifica è insita nell'IDE, e questo settagio avviene in modo completamente trasparente a tutti gli sketch/librerie che le usano. La stessa cosa non vale per le librerie scaricate, ma sinceramente sono talmente poche e l'errore del compilatore così facilmente riconoscibile che non dovrebbe creare grossi problemi anche ai nuovi arrivati.
visto che stasera ho compilato il codice con siccesso, domani faccio altri due check e faccio la pull-request, ovvero chiedere che la mia patch venga inclusa in una della prossime versione dell'ide.
allego l'unico file da modificare per patchare l'IDE, così per darvi un'idea. Il file si trova in Arduino/app/src/processing/app/debug/Compiler.java, ovviamente per accedervi dovrete scaricare i sorgenti di arduino da git-hub, sostituire il file e compilare l'IDE.
La guida per questa operazione la trovate quì: Google Code Archive - Long-term storage for Google Code Project Hosting. oppure c'è in giro una guida del buon Leo72 se non erro
NOTA BENE: anche se l'IDE è ora in grado di compilare, non è in grado di visualizzare i sorgenti nelle sotto-cartelle. La mia pull-request sarà senza questa feature, che potrebbe richiedere un pò di tempo (devo ancora guardare il codice)
edit: Postato anche sulla board inglese http://arduino.cc/forum/index.php/topic,124176.new.html
Compiler.java (27.8 KB)