lunes, 20 de octubre de 2014

Uso de Haxelib

Si nosotros quisiésemos compilar nuestro ejemplo de Hola Mundo para obtener código en C++ o C#, no sería muy distinto a lo que venimos haciendo hasta ahora. 

Pero Haxe nos devolvería un error.  En realidad no es un error, sino que simplemente llegó hasta la mitad del proceso. Eso se debe a que la distribución estándar de Haxe no viene con todas las librerías necesarias para terminar el trabajo.



Al querer compilar para obtener C++:

$>haxe -main HolaMundo -cpp hola

La salida del compilador sería similar a esta

haxelib run hxcpp Build.xml haxe -Dhaxe3="1" -Dhaxe_ver="3.103" -Dhxcpp_api_level="311" -I"C:\\HaxeToolkit\\haxe\\extraLibs/" -I"" -I"C:\\HaxeToolkit\\haxe\\std/cpp/_std/" -I"C:\\HaxeToolkit\\haxe\\std/"
Library hxcpp is not installed   <<- !!!!
Error: Build failed   <<- !!!!

Ahí es donde entra en escena la herramienta Haxelib.

Haxelib es un organizador de librerías o bibliotecas que forma parte del paquete de instalación estándar de Haxe.

Con solo ejecutarlo desde la consola, nos va a traer un sin número de parámetros.

Por el momento, nos basta con saber que permite el envío y descarga de librerías desde un repositorio central.

Cada librería se identifica con un nombre único que le dice al compilador de Haxe si debe incluirla o no al momento de compilar.

Para saber que librerías existen hasta el momento (en inglés), pueden visitar la página principal de Haxelib en lib.haxe.org

Volviendo a nuestro ejemplo de Hola Mundo

Necesitaríamos instalar las librerías de C++ para que Haxe pueda terminar la compilación de forma satisfactoria.

Desde la línea de comandos, invocamos a Haxelib:

$> haxelib install hxcpp


El proceso comenzará con la descarga de la librería en cuestión:



La que continuará con la instalación del paquete descargado:



Si todo el proceso culmina correctamente, las dos últimas líneas deberían ser similares a las mostradas en la imagen de arriba donde aparece la versión de la librería instalada (en este caso la última versión) y la palabra Done (terminado).

Dos cosas son básicas a la hora de que el proceso de descarga e instalación termine bien:

La primera es que haxelib necesita una conexión a internet obviamente. El problema es que ciertos firewalls (muros de fuego) no le permiten el acceso. Si haxelib no puede conectarse al repositorio, lo primero que se debería de chequear es eso justamente.

La segunda es asegurarse que haxelib tiene permisos suficientes como para poder escribir en el disco rígido: Invocarlo como administrador para los usuarios de windows o con sudo para los que usamos linux.

Terminado este proceso, volvemos a nuestro ejemplo:

$>haxe -main HolaMundo -cpp hola

En este punto, hay que tener en cuenta algunas cosas:

Dentro de la carpeta destino (en este caso hola) vamos a encontrar los archivos generados por el compilador.

La función de Haxe es compilar desde su lenguaje propio al lenguaje que hayamos elegido. 

En el caso de que se quiera ejecutar el código en C++ generado por Haxe deberíamos de tener instalado un compilador para dicho lenguaje.

Haxe intentará encontrar un compilador para el lenguaje de destino (C++) y tratará de invocar al enlazador (por lo general llamado link.exe) de dicho lenguaje para generar el correrpondiente archivo ejecutable. (hola.exe en nuestro caso.)

En mi caso particular, tengo instalado Visual Studio 12 Lite. Haxe lo encontró y genreró el archivo ejecutable sin problemas.


Puede observarse en la imagen que mi copia de Visual Studio está en español.

El resultado:






En la próxima entrada seguimos jugando un poco con haxelib y arrancamos con ejemplos un poco mas complejos.