Lug 202014
 

Dopo tanti articoli su Arduino, torniamo ad un nostro vecchio amore: le WxWidgets. E’ da poco (giugno 2014) uscita la versione 3.01 che corregge alcuni bug della Major Release 3.0 la quale rappresenta una svolta epocale nello sviluppo di questa libreria. Il solo elenco delle modiche apportate occupa qualcosa come 180 pagine cosa che da sola è in grado di farci comprendere la portata dell’aggiornamento. La novità di rilievo maggiore è sicuramente la fusione delle versioni ANSI e Unicode, motivo per cui dalla versione 3.x esiste ora un’unica versione unificata. Ciò ovviamente non può che comportare alcune incompatibilità con il vecchio codice, ma è sicuramente un prezzo che vale la pena pagare. Farà sicuramente piacere sapere che le macro wxT() e _T() non sono più necessarie per cui possiamo lasciarle nel vecchio codice senza problemi di compatibilità, ma d’ora in avanti non è necessario più utilizzarle.

Vi consiglio comunque di leggere questa pagina che racchiude le più importanti modifiche dalla versione 2.8 alla 3.0. A differenza che in passato, per Windows sono già pronti i files binari precompilati che trovate a questa pagina, perciò se il vostro scopo è solo quello di ottenere la versione compilata potete tranquillamente scaricarla già pronta e saltare tutto l’articolo.

Download, dezipp, aggiorna, compila…bla bla bla

Se siete ancora qui significa che siete interessati a compilare per conto vostro le wxwidgets, perciò cominciamo con il download che può essere effettuato da questa pagina.  A questo punto decomprimete la cartella con l’importante raccomandazione di usare un percorso che non contenga spazi (ad esempio io ho usato D:\STX\TECNIX\PROGRAMMAZIONE\Librerie\wxWidgets-3.0.1). A questo punto deve essere definita una variabile ambiente varenvWXWIN che contiene il path completo. Il risultato dovrebbe essere simile a quello della figura a lato, ovviamente voi avrete un percorso differente dal mio.

Prima di cominciare la compilazione potremmo approfittare dell’occasione per aggiornare MinGW che spesso viene trascurato. Per farlo potete usare l’installer che trovate qui.

Una volta che siamo sicuri di aver installato la versione più recente di MinGW possiamo procedere. A questo punto apriamo una shell e seguiamo le seguenti operazioni:

1) entrare nella directory %WXWIN%\build\msw con il comando CD %WXWIN%\build\msw.

2) digitare mingw32-make -f makefile.gcc per compilare la libreria di debug in versione statica.

A questo punto parte la compilazione e dopo mooolto tempo la libreria sarà pronta all’uso.

Se anzichè la versione di debug volete compilare la versione “release”, aggiungete al comando di compilazione BUILD=release mentre per compilare la versione shared aggiungete SHARED=1.

Se vogliamo compilare le 4 possibili versioni i comandi da dare saranno:

  • mingw32-make -f makefile.gcc clean (se si tratta di un rebuild)
  • mingw32-make -f makefile.gcc
  • mingw32-make -f makefile.gcc BUILD=release
  • mingw32-make -f makefile.gcc SHARED=1
  • mingw32-make -f makefile.gcc BUILD= release SHARED=1

Oltre ai parametri BUILD e SHARED ve ne sono altri che possono essere utilizzati per personalizzare maggiormente la versione compilata delle nostre librerie. Se siete interessati ad una di queste voci allora la compilazione a partire dai sorgenti è obbligatoria in quanto non trovate queste versioni fra quelle precompilate disponibili sul sito. Fra questi vi segnalo la MONOLITHIC=1 che già conosciamo e permette di creare un’unica grossa libreria. I restanti parametri a meno di esigenze molto particolari sono sicuramente trascurabili per cui se proprio siete curiosi potete studiarli nel file install.txt che trovate nella directory docs\msw.

Per testare la corretta compilazione della libreria possiamo compilare uno dei tanti esempi presenti. Andiamo ad esempio (con il comando CD) alla directory samples\display (ne ho preso uno a caso) e proviamo anche qui il comando mingw32-make -f makefile.gcc. Se tutto va’ liscio dopo un piccolo lasso di tempo comparirà la sottodirectory gcc_mswud contenente l’eseguibile display.exe che permette di modificare la risoluzione dello schermo. Ho provato a compilare qualche altro esempio e tutto è andato liscio al primo colpo.

Conclusioni

Di fatto non è cambiato molto dai tempi in cui avevamo affrontato lo stesso argomento con le WxWidgets 2.9.1, ma sono stato piacevolmente colpito dal fatto che la procedura di compilazione è andata a buon fine sin dal primo tentativo senza alcun particolare problema.