GULA

Skip to content

Usuarios de Software Libre de Alicante


CMake: ¿Bye bye autotools?

Imagen de Rawsock
Enviado por Rawsock el Dom, 01/04/2007 - 12:52

Hace unos mesecillos tuve la oportunidad de poder utilizar autotools para montar el sistema de build de una práctica bastante grande. El resultado final es el que la mayoría de vosotros podeis ver cuando os bajais un .tar.gz : ./configure && make && make install. Pero el esfuerzo inicial para montar un proyecto en autotools es considerable : documentación atrasada, una comunidad de usuarios que se pasa ficheros .m4 sin saber muy bien que hacen, incompatibilidades entre versiones y una sensación en general de no saber qué cóño se está haciendo realmente. Eso sí, una vez montado está muy bien.

Pero no es oro todo lo que reluce. Por ejemplo se supone que el tema de generación de Makefiles se maneja desde los ficheros Makefile.am. Sin embargo, como no especifiquemos que Makefiles queremos generar en el configure.in, no se crearán. Estas dependencias mutuas entre distintos programas puede volver loco a más de uno, sobre todo si varios desarrolladores utilizan distintas versiones de automake, autoconf y libtools.

Me enteré de la existencia de CMake por el "enemigo" : KDE se pasará a CMake. Por curiosidad, traté de recrear la estructura de proyecto de la práctica con CMake. En menos de 2 horas ya tenía el tinglado funcionando. Incluidas unas reglas muy raras para generar los Unit Test, que utilizan CxxTest que a su vez utiliza Python o Perl (a elegir). En el caso de Automake, en 3 días no pude crear esas reglas y acabé utilizando un script-Makefile propio que daba asco verlo.

Toda esta experiencia la estoy aplicando al sistema de build de mi proyecto de fin de carrera: un wrapper libre sobre varios motores de física como Bullet u ODE. Uno de los requisitos del PFC impuestos por el tutor es proporcionar ficheros de proyecto para Visual Studio y que el proyecto compile en esta plataforma. Y aquí CMake entra al rescate de nuevo, ya que no sólo genera Makefiles estándar, sino que también puede generar archivos de proyecto para Visual Studio, Borland y KDevelop.

Es un gustazo dejar de lado el horrible IDE del VS (o cualquier IDE, en general), abrir un Vim como $DEITY manda, personalizado a tu gusto, y lanzar a compilar el proyecto desde ahí. Si, justo, estoy utilizando Visual Studio como un sistema de build, nada más :P.

¿Significa la existencia de CMake el fin de autotools?. Ni de coña. A pesar de ser un proyecto maduro, CMake todavía tiene algunas carencias. Aunque la comunidad que está detrás de CMake tiene fama de ser muy abierta a las opiniones externas. Por ejemplo, muchos cambios pedidos por la gente de KDE están siendo atendidos con gusto por la comunidad de CMake, tal y como se explica en el artículo de LWN mencionado ut supra.

Eso sí, si estais pensando en hacer un proyecto Multiplataforma en C/C++, CMake es recomendable al 100%. En cuanto tenga tiempo, moveré todos los miniproyectos que tengo (engine 2D incluído) a CMake, si el resto de Vacas Espaciales me deja ;).




Licencia
Todos los contenidos de esta web están publicados bajo una licencia Creative Commons.
Web desarrollada con Drupal.
Contador de visitas