Periplo por un entorno de trabajo para Ogre

Estos días he estado tratando de establecer un entorno de trabajo multiplataforma para trabajar en los ejemplos de IberOgre y en el propio Sion Tower. Lo ideal, para mí, era poder compilar con herramientas libres y sin tener que depender de ningún IDE. Al no ser la forma habitual de desarrollar de la comunidad de Ogre, la documentación era escasa y acertar ha sido sorprendentemente complicado. Les contaré mi periplo:

Herramientas privativas

La wiki oficial de Ogre da mucho soporte a Microsoft Visual Studio pero al ser privativo no encajaba con la filosofía de IberOgre y lo descarté. No creo que utilizar herramientas no libres sea bueno en un proyecto que pretende ser accesible con facilidad. Suficientes trabas pone ya el hecho de tener que interiorizar conceptos complejos como para encontrarse en la necesidad de piratear software, violar licencias etc.

Cualquier desarrollador debería poder, siguiendo el manual de IberOgre, establecer un entorno de trabajo sin costes de ningún tipo y sin problemas con licencias. Ogre3D es software LGPL y creo que, en el marco en el que estamos moviéndonos, sería recomendable mantenerse en la línea.

CMake, el generador de makefiles

CMake es una herramienta multiplataforma y open source capaz de generar makefiles específicos para cada plataforma. Debemos crear un fichero CMakeLists.txt con las instrucciones pertinentes: código a compilar, librerías requeridas y demás dependencias. Parecía algo estupendo, con un solo fichero de CMake podría generar makefiles para compilar proyectos tanto en GNU/Linux (GCC) como en Windows (MinGW).

Finalmente, los inconvenientes de CMake me hicieron prescindir de él. Existe poca documentación y su curva de aprendizaje es alta. Además no crea objetivos “clean” que verdaderamente limpien los ficheros que se generan en la compilación. Estos inconvenientes no compensaban añadir una capa de abstracción más al proceso.

Code::Blocks, el IDE libre

Code::Blocks es un entorno de desarrollo integrado libre con versiones para Linux y Windows. Además, cuenta con asistentes para la creación de proyectos de Ogre. Mi desesperación en ese momento era considerable y estaba dispuesto a usar un IDE si merecía la pena.

Todo no podía ser bueno y comencé a encontrarme con varios obstáculos. Los asistentes generaban proyectos que escribían en el directorio de instalación de Ogre y que precisaban de múltiples ajustes. Por si fuera poco el asistente de Windows no era compatible con la versión 1.7 del motor (la más reciente) y tuve que descargar la nueva versión del wizard desde aquí.

Code::Blocks utiliza el compilador GCC en Linux y, si lo deseas, MinGW en Windows. Era muy posible que internamente utilizase make (o algo parecido) para compilar sus proyectos. Si ese era el caso, seguramente existiera un exportador que tomara un proyecto de Code::Blocks y lo convirtiera en un makefile.

Makefile a partir de un proyecto de Code::Blocks

Al encontrar, cbp2mak, el deseado exportador vislumbré un rayo de esperanza. Quizás, finalmente pudiera utilizar un makefile para cada plataforma que se ajustara exactamente a mis necesidades. El proceso es muy sencillo, descargamos cbp2mak y ejecutamos las siguientes instrucciones:

unzip cbp2mak-0.2.zip
cd cbp2mak.zip
make

./cbp2mak -C ruta_al_proyecto proyecto.cbp

El makefile resultante es un poco extraño y complejo pero, utilizando ese como base he podido crear unos a mi medida. Un proyecto de Code::Blocks es un XML en el fondo, podemos abrirlo con un editor y ver qué flags utiliza para el compilador y el enlazador.

El resultado

En contra de todo pronóstico, el resultado ha sido excelente. A continuación, coloco un ejemplo de cómo sería una jerarquía de directorios para un proyecto básico en Ogre:

|- proyecto
|
|- src
|   |- ficheros.cpp
|
|- include
|   |- ficheros.h
|
|- plugins (en caso de ser necesarios)
|
|- makefile-linux
|- makefile-windows

Para compilar sólo tendríamos que hacer (según el sistema operativo):

make -f makefile-linux depend
make -f makefile-linux

mingw32-make -f makefile-windows depend
mingw32-make -f makefile-windows

Para personalizar el nombre del proyecto sólo tenemos que modificar el valor de una variable en cada makefile. Por supuesto, esto supone tener una serie de paquetes en el sistema y ciertas variables de entorno, todo el proceso de instalación acabará ampliamente detallado en IberOgre.

Ahora a seguir trabajando duro y llenar de contenido el wiki.

  • http://SitioWeb Ruben

    Bueno, Visual Studio como tal está concebido como privativo si, pero las versiones express??? Se han concebido como IDE abierto, gratuito para el desarrollo y no hay que pagar cánones a la hora de desarrollar con ellas… Y la potencia es la misma o similar…

    En mi época de universitario usabamos VC++ 2005 express para trabajar en C++. Yo ahora uso Linux y para trabajo con Ogre el Ide CodeBlocks pero creo que es una posibilidad abierta utilizar también VS Express sobre todo para no iniciados la sencillez que da a la hora de empezar…

    Muy buen foro!!! Gran trabajo!!!

    Ánimo con tu PFC!!! Pinta muy bien.

    Seré un poco critico, sorry, pero soy así, jej. Me pasaré regularmente para informarme. Ahora estoy documentándome en usar Ogre como motor de render para Realidad Virtual pudiendo añadir escenas estereográficas, veremos en que queda…

    • http://siondream.com David Saltares

      Hola Rubén, muchas gracias por pasarte por aquí.

      Es cierto que desarrollar en Visual Studio Express es perfectamente lícito, ¡faltaría más!. En Code::Blocks es incluso mejor por su carácter libre y mayor accesibilidad. Ahora bien, si tienes pasta y quieres comprar una licencia de Visual Studio “Ultimate” (me lo invento), adelante, eres libre de hacerlo.

      Para IberOgre he apostado por utilizar entornos libres y multiplataforma con el objetivo de llegar a un público lo más amplio posible. Se ofrece una alternativa libre aunque cada uno puede elegir el camino que desee. El problema de VS es que no es multiplataforma.

      Me parece perfecto que seas crítico, así es como se enriquecen los proyectos. Mientras no se haga el troll, claro está :D. Me alegro de que estés interesado en mi proyecto y gracias por tus ánimos. En lo que estás trabajando también parece muy interesante, ¡mucha suerte!

      ¡Saludos!