Set 012010
 

Dopo aver installato MinGW siamo pronti per questo secondo passo.

Prima di tutto scarichiamo dal sito ufficiale (http://www.wxwidgets.org/), nello specifico caso ho appena scaricato la versione 2.9.1 (http://sourceforge.net/downloads/wxwindows/2.9.1/). Una volta decompresso l’archivio ci ritroveremo dinnanzi ad una cartellina dal nome wxWidgets-2.9.1 con tutta una serie di files e sottocartelle contenuti in essa.  Una cosa di fondamentale importanza è tenere la cartellina wxWidgets-2.9.1 (che da ora chiamerò $wx per brevità) in un pth che NON contiene SPAZI. Sarà perciò da evitare di mettere la $wx all’interno ad esempio di una cartella “Miei lavori”. Se siamo pronti possiamo tranquillamente aprire un prompt dei comandi e cominciare.

Prima di tutto dobbiamo cominciare con un CD $wx\build\msw

una volta entrati nella directory ci basterà un mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=1 UNICODE=1 per far partire la compilazione. Occhio, anche con PC di una certa potenza passeranno 20-30 minuti per terminare il processo. Una volta terminato lanciamo un secondo comando del tipo mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=1 UNICODE=1  e dopo un’attesa di altrettanto tempo avremmo pronta anche la seconda versione delle wxwidgets, in particolare la prima sarà la versione “release” e la seconda quella “debug” (come comprensibile dal parametro BUILD). I più curiosi saranno interessati ai vari parametri utilizzabili per compilare le nostre wxwidgets.

Opzioni di compilazione della libreria wxWidgets:

Parametri Descrizione
UNICODE=1 Le librerie wxWidgets inferiori alla versione 3 (già rilasciata al momento in cui scrivo) può essere compilata sia in modo ANSI che UNICODE.
SHARED=1 Con SHARED=1 compila la libreria come una DLL. In questo caso la libreria verrà posizionata nelle apposite directory di sistema e collegata al momento dell’esecuzione del nostro codice. In caso contrario la libreria non deve essere presene nel computer ma viene integrada direttamente nel codice eseguibile che ovviamente avrà dimensioni maggiori.Importante: con MinGW sotto windows la compilazione con SHARED=0 non sembra funzionare, o almeno io ho avuto sempre degli errori che mi hanno impedito la compilazione.
MONOLITHIC=1 Funziona solamente in combinazione a SHARED=1 e produce un’unica grossa libreria invece che produrne tante di più piccole dimensioni.
BUILD= Può essere impostata a debug o release. Debug crea una versione più grande ma con il codice di debug
USE_XRC=1USE_RTTI=1

USE_OPENGL=1

Ci sono altre opzioni attivabili. Ad esempio USE_OPENGL per chi vuole avere il supporto OPENGL. Conviene comunque dare uno sguardo alla documentazione ufficiale in quanto anche queste opzioni variano nel tempo. Ad esempio non saprei dire se è ancora valida la USE_ODBC=0. Per cominciare non ci servono comunque queste “finezze”.

Se non avete fatto errori, troverete nella director0y $wx\lib\gcc_lib i due files prodotti che sono libxmsw29u.a e libxmsw29ud., dove la “u” indica la versione unicode e la “d” la versione “debug”.

Ora proviamo se tutto funziona: facciamo un cd $wx\samples\toolbar, sempre ricordando che con $wx intendo il percorso della directory delle wxwidgets, che nel mio specifico caso corrisponde a cd C:\STX\wxWidgets-2.9.1. Ora proviamo con un mingw32-make -fmakefile.gcc BUILD=release  SHARED=0 MONOLITHIC=1 e se tutto va’ per il verso giusto senza errori nella directory $wx\samples\toolbar comparirà una directory gcc_mswu al cui interno ci sarà l’eseguibile (toolbar) compilato. Abbiamo perciò appena visto come compilare tutti gli esempi forniti con le wxwidgets, il che è molto importante visto quanto materiale possiamo ricavare da questi esempi. Ho counque scritto un apposito articolino su come compilare gli esempi delle wxwidgets sia sotto windows che linux e che potete leggere qui.

Se siamo giunti fin qui possiamo procedere con il grosso passo, ossia l’installazione di un ambiente di sviluppo che nel mio caso la scelta è ricaduta su CodeBlocks.

  2 Responses to “Compilare le wxWidgets in Windows”

  1.  

    Dopo aver con sucesso installato mingw segueno le istruzioni del primo articolo, sto sto provando a compilare le wxwidgets con il comando mingw32-make -f makefile.gcc build=release shared=1 monolithic=1 unicode=1 con windows wp.
    Ho provato con diverse versioni, anche con l’opzione shared=0, ma l’errore è sempre lo stesso:
    In file included from ../../src/zlib/crc32.c:29: ../../src/zlib/zutil.h:38:23: errno.h no such file or directory
    mingw32-make: *** [gcc_mswuddll\wxzlib_crc32.o] Error 1.
    I file sono regolarmente presenti nella cartella zlib, che si trova proprio nel path relativo indicato (../../src/zlib)
    Quale puà essere il problema?

    •  

      Come immagini non è facile risponderti. Diamo per scontato che mingw sia correttamente installato, altrimenti l’errore sarebbe diverso. Diamo per scontato che hai fatto CD nella directory delle wxwidgets prima di compilare. Dovrebbe essere tutto a posto. Allora dimmi: che versione di wxwidgets hai sul tuo PC? Io dopo la 2.9.1 non ho più fatto aggiornamenti per cui potrebbero esserci dei cambiamenti sulle opzioni di compilazione. Sono andato ora a sbirciare e vedo che è uscita la 2.9.3 in cui c’è stata l’unificazione delle versioni Unicode ed Ansi per cui immagino, ma non ho approfondito, che la relativa opzione di compilazione sia cambiata. Se mi fai sapere che versione hai provo a fare una simulazione per cercare di ricreare il tuo errore. Puoi scrivermi anche il percorso completo che punta alle tue wxwidgets? Vediamo se insieme arriviamo ad una soluzione, anche se sarà dura.