Nov 232010
 

Un titolo lungo per un argomento che può nascondere diverse insidie. Vediamo a cosa ci riferiamo. Prenderò quale esempio un mio vecchio progetto, uno dei primi scritti con CodeBlocks.. Ma non voglio annoiarvi con il programma vero e proprio: quel progettino utilizzava le WxWidgets 2.8.9 che ora vorrei sostituire con le 2.9.1. Come facciamo? Diamo per scontato che le wxwidgets siano già state scaricate e compilate correttamente sul nostro PC, sia che si tratti di una piattaforma Windows che Linux.

Per prima cosa sono andato a controllare le variabili globali di CodeBocks (Settings -> Global Variables). Nel mio caso però la variabile wx era già stata modificata con il percorso delle wxWidgets 2.9.1, ma se nel vostro caso non è così, occorre modificare il percorso.

In secondo luogo sono entrato nelle “Build Options” per verificare i percorsi inseriti nelle “Search Directory”. Purtoppo nel mio caso, essendo stata la prima esperienza, non avevo utilizzato i percorsi relativi con le variabili globali per cui anche in questo caso dobbiamo modificare i percorsi. Se avete seguito le precedenti puntate sapete già come fare, ma per chi non conoscesse ancora questo blog ricordo che in questa pagina ho raccolto i principali link agli articoli di base e in questa c’è quello specifico all’utilizzo delle variabili globali di CodeBlocks su Windows. Ricordo che tali informazioni sono necessarie anche agli utenti linux che vogliano creare progetti multiplatform.

Sinora perciò nulla di diverso da quanto visto nelle scorse puntate, anzi, se i vostri primi progetti sono stati fatti seguendo quelle regole in questo momento avrete aggiornato solamente il percorso della variabile globale wx di CodeBlocks. Ma se ora cercate di compilare vi compare l’errore “cannot find -lwxmsw28u” che indica chiaramente che il linker non trova nei percorsi assegnati la libreria wxwidgets 2.8.x in quanto ora puntano alla 2.9.x. Per risolvere il problema è sufficiente tornare nelle “build options” e nei “linker setting” sia delle versioni di debug che release e modificare rispettivamente le voci libwxmsw28ud.a e libwxmsw28u.a in libwxmsw29ud.a e libwxmsw29u.a e tutto funzionerà a dovere.

Il succo del discorso è che se impostiamo a dovere i progetti sin dall’inizio, con il cambio di due soli caratteri, due “8” che sono diventati “9” ed il cambio di percorso della variabile globale wx, siamo stati in grado di modificare senza traumatismi la versione di wxwidgets usata nel nostro progetto. Nel caso invece in cui il progetto sia nato in modo un po’ meno oculato ci saranno molte cose da modificare ed i rischi di problemi più o meno grossi saranno esponenziali ma in questo blog ci sono tutte le informazioni necessarie a risolvere ogni problema.