miércoles, 8 de agosto de 2012

Tutorial: Incluir el framework libSDL en tu app con XCode 4

Nuestro objetivo es incluir el framework con la librería SDL en la aplicación para no tener que obligar al usuario a instalarlo en /Library/Frameworks. De paso, explico cómo crear desde cero una aplicacion SDL en Mac.
Primero creamos una nueva aplicación Cocoa:
Vamos a llamar a nuestra aplicación "pruebaSDL2".
En este momento tenemos una aplicación COCOA Normal y corriente. Primero copiamos el framework de SDL al directorio que contiene nuestro proyecto. Simplemente arrastramos el framework con el ratón.
La aplicacion sólo tiene un target. Buscamos la sección de enlace con los frameworks y añadimos uno más.
Seleccionamos el framework que acabamos de copiar en el directorio de nuestro proyecto.
Quedando de esta manera.
Si ahora compilamos e intentamos ejecutar nuestra aplicación, obtenemos este error en la ejecución. El cargador de librerías de MacOs no es capaz de encontrar la librería SDL contra la que hemos enlazado.


Volvemos a buscar nuestro único target y entramos en la sección de fases de construcción "Build Phases". Añadimos una fase más de copia de ficheros. Cambiamos el destino de la copia a "Frameworks" y añadimos nuestro framework de SDL.

Ahora especificamos el camino que debe buscar el cargador de librerías dinámicas en tiempo de ejecución. Buscando un poco en Google, encontré este post, que lleva a este otro enlace que explican bastante bien lo que hacemos en este paso. Resumiendo, lo que hacemos es poner el valor "@loader_path/../Frameworks" en la variable @rpath.

Ahora vamos a sustituir el código por defecto por el código necesario para crear una ventana SDL. Primero borramos del proyecto los ficheros que crean la ventana Cocoa.
Y a continuación añadimos los ficheros del directorio "devel-lite" que viene con el framework que nos bajamos de la pagina oficial.
Nos aseguramos de marcar "Copy to destination..." y de que añadimos los ficheros al target del proyecto.
Creamos un nuevo "main.c" con la opción "New File..." del menú "File" y eligiendo el tipo "C file". En este fichero programamos nuestra función main. Yo he copiado y pegado el código de este ejemplo que he encontrado.
Al intentar compilar veremos que tenemos un par de errores por que no encontramos el fichero "SDL.h" en los includes.
Yo me he limitado a cambiarlos a "SDL/SDL.h".
Ya tenemos nuestro ejemplo SDL funcionando con la librería SDL incluida en el directorio app que genera la compilación.

No hay comentarios: