WxEiffel és una interfície per al llenguatge Eiffel per tal d'usar la biblioteca WxWindows. Tant la biblioteca com la interfície són multiplataforma, però a vegades l'instal·lació en un entorn *IX no és tan senzilla com sembla a priori.
1. Requeriments
Per començar necessitarem un compilador, com és lògic, d'Eiffel. Per aquest document s'ha usat SmartEiffel, el compilador GNU d'Eiffel que podeu trobar a http://smarteiffel.loria.fr. Si accediu a la secció Download podreu descarregar-lo. Compilar-lo i posar-lo en funcionament és senzill i està ben documentat.
Aquí usarem el WxGTK per tant és necessari que tingueu instal·lades les GTK 1.2 com a mínim. Si no n'esteu segurs de si ho teniu o no, proveu a mirar si podeu usar l'utilitat gtk-config. Si no és el cas aneu a http://www.gtk.org/
2. Instal·lació WxWindows (WxGTK)
Aneu a http://www.wxwindows.org/ i a la secció Download escolliu UNIX/GTK+ (com veureu hi ha d'altres ports per a entorns UNIX com ara MOTIF o X11, però nosaltres usarem, com ja hem dit, GTK). Ara baixeu-vos el wxGTK-2.4.0.tar.gz (o wxGTK-2.4.0.tar.bz2 si ho preferiu).
Aneu al directori on teniu l'arxiu i
$ tar -zxf wxGTK-2.40.tar.gz $ cd wxGTK-2.4.0 $ ./configure --with-no-rtti --with-no-exceptions --disable-shared --with-gtk $ make
Un cop fet això feu un make també als directoris
wxGTK-2.4.0/contrib/src/fl
wxGTK-2.4.0/contrib/src/plot
wxGTK-2.4.0/contrib/src/gizmos
Si consulteu ara el directori lib veureu que hi ha 4 nous arxius (si tot ha anat bé)
libwx_gtk-2.4.a
libwx_gtk_fl-2.4.a
libwx_gtk_plot-2.4.a
libwx_gtk_gizmos-2.4.a
Ara, des de root, moveu tot el directori wxGTK-2.4.0 a /usr/local.
3. Instal·lació wxEiffel
Aneu a http://sourceforge.net/project/showfiles.php?group_id=28837 i baixeu-vos el binaries.zip i el eljlib-06.tar.bz2
Aneu al directori on teniu el eljlib i feu
$ tar -jxf eljlib-06.tar.bz2
I moveu-lo a on creieu convenient (és indifirent, tampoc l'usareu per gaire res u_u), suposarem que el teniu al vostre directori Home (~/)
Ara aneu al vostre directori de treball (on posareu els .e per tal de compilar-los) i feu el següent
$ cp ~/elj-2002/lib/ifs/eiffel/ewxw/ewxw_glue.h .
Amb això copiareu la capçalera de les funcions usades per wxEiffel per tal de que el codi C generat per Eiffel les pugui usar.
Ara creeu també en el vostre directori de treball un arxiu anomenat loadpath.se i afegiu-hi les següent línies:
~/elj-2002/lib/ifs/eiffel/ewxw ~elj-2002/lib/ifs/eiffel/ewxw/gtk
La primera permetrà al compilador d'Eiffel reconèixer la classe WX_DEFS i la segona la WX_APP.
Ara, però, falten les llibreries perquè podem executar l'aplicació correctament. Tornem a la nostre carpeta de descàrregues i fem:
$ unzip binaries.zip $ cd bin $ cp linux/* ~/elj-2002/bin/linux
Entrem en root i fem:
$ cp linux/libwxEiffel-2.4.so /usr/lib $ cd /usr/lib $ ln -s libwxEiffel-2.4.so libwxEiffel.so
4. Compilar!
Molt senzill:
$ compile arxiu.e -lwxEiffel
Res més a fer!
5. Programa de prova
A continuació teniu un programa de prova que podeu usar per verificar si ho heu fet tot bé.
class TUTORIAL
inherit
WX_DEFS
creation
make
feature {NONE}
make is
local
app: WX_APP
do
create app.make(agent initialize)
end -- make
feature {NONE}
initialize (a_app: WX_APP): BOOLEAN is
do
create frame.make (Void, -1, "Hello Eiffel world", -1, -1, -1, -1, wxDEFAULT_FRAME_STYLE)
frame.show
a_app.set_top_window (frame)
Result := True
end -- initialize
frame: WX_FRAME
end -- class TUTORIAL6. Agraïments
rofi - Per fer-me entendre com funciona el ld i com li agrada que li diguem on són les llibreries.
Cid - Per permetre'm reduir el meu loadpath.se de 53 a 2 línies
7. NOTES FINALS
Si us fixeu no hem usat les wxGTK per res. ¿Llavors perquè serveixen? No ho se, potser algun dia ho descobriré! En tot cas, si voleu compilar vosaltres mateixos la llibreria wxEiffel necessitareu el wxGTK.
Si alguna cosa us falla, proveu d'afegir al 'loadpath.se'
/usr/local/wxGTK-2.4.0 /usr/local/wxGTK-2.4.0/include/wx ~/elj-2002/lib/cmn/eiffel/base/mem/std ~/elj-2002/bin/linux
Com haureu comprovat el compilador d'SmartEiffel és una mica torracollons i ens dona la guitza amb warnings de estil quan compilem projectes que usen la wxEiffel. Per solucionar-ho podeu usar el paràmetre -no_style_warning a l'hora d'usar el 'compile'. Us recomano que en feu un àlias: si useu bash editeu el vostre .bashrc i afegiu-hi:
alias compile="compile -no_style_warning" alias compile_to_c="compile_to_c -no_style_warning"
Per acabar cal dir que l'última versió que vaig provar del port (06), no gestioanava correctament els events de botons i, segons el propi autor, es tracta d'un bug. L'instal·lació de la llibreria a GTK és, doncs, totalment inútil.

