jueves, 9 de mayo de 2013

Segundo Proyecto: Librería Interna

Para la programación de este proyecto voy a crear una serie de librerías internas en donde podremos nuestro código que sea reutilizable. Una serie de clases y funciones que amplíen las funcionalidades de SFML 2.0 y también nos ayuden a encajar las librerías de TMXParser y Box2d con SFML 2.0 o lo que es lo mismo un motor de juegos.

Creando una plantilla para librerías

Como podremos tener mas de una librería interna lo mejor es que creemos una plantilla que nos permita agilizar la creación de librerías. El proceso es muy similar al que seguimos para crear las plantillas de proyectos en esta entrada solo que en vez de un ejecutable crearemos una librería estática.
La librería la crearemos en una carpeta a la que llamaremos InternalLib y dentro de esa carpeta crearemos otra llamada _InternalLibTemplate. Dentro de esta última también creamos dos carpetas source y include para contener los futuros archivos de la librería.
Lo primero es abrir el VS2010 y elegir Archivo > Nuevo > Proyecto… (File > New > Project…)
IL01
Aparece el dialogo de la imagen superior. Hay elegimos tipo de proyecto Win32 > Proyecto Win32 (Win32 > Win32 Project). Ponemos de Nombre (Name) build, elegimos la carpeta creada anteriormente como Localización (Location) y activamos “Crear directorio para solución” (Create directory for solution) y finalmente Aceptar (OK).
Aparece el siguiente dialogo:
IL02
Elegimos la opción de Configuración (Application Setting), como tipo de aplicación elegimos Librería estática (Static Library). Quitamos la selección de Cabecera Precompilada (Precompiled Header) y Pulsamos Finalizar (Finish).

Configuración básica de la plantilla

La configuración de la plantilla será muy sencilla. Como no todas las librerías que hagamos tendrán que estar vinculadas con SFML 2.0, no necesitamos más que configurar donde queremos que salga la librería ya cocinada.
il03
Como veis en la imagen anterior, he cambiado, para todas las configuraciones, el directorio de salida ha ..\lib\, de forma que la librería final esta en un sitio limpio, y como directorio intermedio he usado ..\obj\$(Configuration)\, con lo que los archivos que luego no sirven para nada están también localizados.

NOTA

Una librería una vez finalizada y comprobada se puede distribuir simplemente pasando los archivos de cabecera y el resultado final de la compilación. Normalmente solo se “publica” la versión RELEASE.
Una última configuración es hacer que la versión de DEBUG tenga un nombre distinto.
IL04

Extendiendo SFML 2.0

Una vez creada nuestra plantilla, vamos ha hacer una copia y ha cambiar el nombre de la carpeta, para crear nuestra librería interna principal que será una extensión de las funcionalidades de SFML 2.0
Así copiamos toda la carpeta _InternalLibTemplate al mismo directorio y le cambiamos el nombre por SFMLX. Abrimos la solución de la nueva carpeta para realizar algunos cambios.
Lo primero será seleccionar el proyecto en el exploración de soluciones y pulsando F2 cambiar el nombre de build a SFMLX, para que las librerías que genere tengan ese nombre.
il07
Tenemos que añadir un archivo fuente para que aparezcan todas las propiedades del proyecto. Así que pulsando con el botón derecho del ratón sobre la carpeta archivos fuente (source files) seleccionamos añadir > nuevo elemento… (Add… > New Item…) y aparecerá el dialogo que se muestra arriba.
Ahí seleccionamos Archivo C++ (C++ File), cambiamos el nombre por main (no importa el nombre, este archivo lo borraremos mas adelante) y cambiamos la ubicación a la carpeta source que creamos anteriormente.
il08
Yendo a las propiedades del proyecto como hicimos al principio, ahora aparece las opciones de C/C++. Primero debemos poner la configuración a todas las configuraciones para que los cambios se apliquen a debug y release. Seleccionando C/C++ y seleccionando <editar…> del desplegable de Directorios de Inclusión Adicionales (Additional Include Directory) aparece otro dialogo en donde introduciremos dos nuevas direcciones:
  • ..\include para que incluya los archivos de cabecera propios del proyecto
  • ..\..\..\ExternalLib\SFML2\include para que incluya los archivos de SFML2
Con esto ya tenemos un proyecto en donde podremos ir añadiendo clases y funciones para aumentar las funciones de SFML 2.0.
Gracias por vuestro tiempo. No vemos en la siguiente entrada.

1 comentario:

Anónimo dijo...

Hola David, te agradezco por tus artículos, están muy buenos!!