WxWidgets es básicamente una biblioteca que nos permite a los desarrolladores diseñar interfaces gráficas de usuario (GUIs) para nuestras aplicaciones, brindándonos un conjunto bastante amplio de widgets o elementos para nuestras interfaces. Algo muy interesante de esta biblioteca es que tiene la propiedad de ser multiplataforma (o crossplatform) lo que quiere decir que nuestras interfaces pueden ser utilizadas en Windows, Linux, Mac OS, etc; sin necesidad de modificar nada en el código fuente.

A pesar de estar desarrollada completamente en C++, también posee bindings que nos permite hacer uso de todos sus elementos de interfaz gráfica en lenguajes como Python, Perl, Ruby entre otros. En este artículo vamos a ver lo fácil que es compilar esta biblioteca en nuestro sistema Linux y dejarla lista para construir nuestras propias interfaces.

Compilar Wxwidgets en realidad no es tan difícil como se podría pensar y vamos a lograrlo con los siguientes pasos.

Paso I: Obteniendo wxwidgets

El primer paso es ingresar a wxwidgets.org y descargar la versión de Wx que queremos instalar, en mi caso voy a instalar la última versión estable de esta biblioteca (que al momento de escribir esto es la 3.0.2) pero dependiendo de la fecha en que leas esto puede que la versión sea otra, igual estos pasos te funcionarán.

Descargamos el paquete dando click en el link Source for Linux, OS X, etc.

Captura de pantalla de 2016-07-21 13-54-31

Descomprimimos el archivo descargado en una carpeta en nuestro sistema, en mi caso ya lo extraje en la propia carpeta Descargas dentro de una carpeta llamada wxWidgets-3.0.2.

Paso II: Instalado Algunas Dependencias.

Para realizar la compilación necesitamos tener instaladas algunas dependencias, pero que son muy sencillas de instalar, solo hay que ejecutar la siguiente línea en una terminal:

sudo apt-get install libgtk-3-dev build-essential checkinstall

La utilidad llamada checkinstall que aparece en la lista anterior, nos permite generar paquetes .deb (tipo aplicación) de lo que hayamos compilado, lo que quiere decir que más adelante cuando vayamos a desinstalar esta versión de Wx lo podremos hacer muy fácilmente.

Paso III: Compilando Wxwidgets.

Para mantener las cosas limpias vamos a ingresar con nuestra terminal al directorio donde hemos descomprimido Wxwidgets y creamos una carpeta llamada compilacion e ingresamos a ella, ejecutando estos dos comandos.

mkdir compilacion
cd compilacion/

Ahora vamos a ejecutar desde esta carpeta los comandos configure y make uno a la vez como se muestra a continuación:

../configure --disable-shared --enable-unicode
make

La opción –disable-shared le indica al compilador que genere librerías estáticas en lugar de librerías dinámicas. Más información sobre las opciones de compilación y sus efectos se puede encontrar en los archivos readme.txt e install.txt que se encuentran en la carpeta /docs/gtk/ dentro del directorio de wxwidgets que hemos descomprimido.

Cada comando tomará algunos minutos, una vez han terminado su trabajo ya estamos listos para instalar widgets en nuestro sistema.

Paso IV: Instalación con Checkinstall.

En lugar de utilizar el típico make install, vamos a hacer las cosas más ordenadas y limpias, vamos a hacer uso de la utilidad checkinstall que como mencioné anteriormente nos permitirá instalar wxwidgets como se instalaría una aplicación típica de Linux.

sudo checkinstall

Checkinstall nos va a llevar a través de unos pasos muy definidos para terminar instalando wxwidgets, asegurate de introducir los espacios de nombre y número de versión cuando sea necesario para evitar que checkinstall termine lanzando algún error y debas volver a comenzar.

Al final si todo salio bien debería aparecerte algo como en mi caso la siguiente figura.

instalacion exitosa de wxwidgets linux mint.png

Una vez el proceso ha finalizado, wxwidgets debería estar ya instalado en el sistema y un nuevo paquete .deb debe haberse creado en el directorio de compilación.

Paso V: Compilando los Ejemplos

Una vez finalizada la instalación, ¡vamos a querer probar las bondades de wxWidgets!. Dentro de la carpeta donde realizamos la compilación (que en nuestro caso decidimos llamarla compilacion) debe haber ahora una subcarpeta llamada samples/, vamos a ingresar a esa subcarpeta y a ejecutar el comando make para que se compilen los ejemplos:

cd samples/
make

Una vez se termine la compilación de todos los ejemplos, podremos entrar a cada una de las subcarpetas y ejecutar cada uno de los ejemplos. En mi caso, un ejemplo de todos los que están en la carpeta samples es el siguiente:

ejemplo de calendario wxwidgets.png

Compilemos Nuestra Propia Ventana

Ahora que vemos como funcionan correctamente las interfaces gráficas que vienen en la carpeta de ejemplos, vamos a realizar la prueba de fuego y lo que vamos a hacer (tal como dice el título) es compilar un código sencillo, el código de abajo solo debes copiarlo y pegarlo en un nuevo archivo de texto en tu editor favorito y guardarlo con el nombre basic y con la extensión .cpp porque es código de C++.

#include <wx/wx.h>

class Ventana : public wxFrame
{
public:
    Ventana(const wxString& title)
		: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 150))
	{
		Centre();
	}
};

class MyApp : public wxApp
{
public:
	bool OnInit()
	{
		Ventana *ventana = new Ventana(wxT("Nueva Ventana"));
		ventana->Show(true);
		return true;
	}
};

wxIMPLEMENT_APP(MyApp);

Para compilar este código, debes dirigirte con tu terminal a la carpeta donde guardaste el archivo y escribir lo siguiente. (en caso de no tener instalado g++, el compilador de C++ en Linux, solo escribe sudo apt-get install g++).

Para compilar:

g++ basic.cpp `wx-config --cxxflags --libs std` -o program

Para ejecutar el programa:

./program

El resultado de compilar el código anterior y ejecutar el programa generado es más o menos el siguiente (aunque la apariencia puede diferir un poco dependiendo del sistema operativo).

nueva ventana  ejemplo de wxwidgets instalacion y compilacion

Eso es todo por ahora amig@s, espero que este artículo les haya resultado útil, si tienen alguna sugerencia (o saludo) nos leemos en los comentarios. Nos vemos en un próximo artículo…¡y ayúdanos a compartirlo! para continuar trabajando y traerte más artículos.


Author: Julio César Echeverri M.

Anuncios