Compilando Aplicaciones con SCons

Estudiando como compilar el código del Quake 3 llegué a dar con una herramienta de lo más interesante, llamada SCons. Se trata de un sistema para construir programas sustituto de autoconf, automake y otras yerbas del proyecto GNU que dos por tres pueden terminar dando un dolor de cabeza tanto a desarrolladores como a usuarios finales.

Una de las ventajas de SCons frente a make, más allá de su simplicidad, consiste en que provee un entorno de construcción multiplataforma. Utilizando SCons basta con escribir un único archivo con las directivas para construir el programa (el archivo SConstruct, equivalente al Makefile) y SCons se encargará de traducir nuestras directivas en los comandos apropiados para el sistema donde estamos compilando, por ejemplo, invocando GCC sobre Linux/UNIX o cl (el compilador del Visual C++) sobre MS Windows.

Otra ventaja que tiene SCons es que los archivos son en realidad scripts Python, por lo cual podemos sacar partido a este excelente lenguaje para resolver todos nuestros problemas de construcción, sin importar que tan complicados sean.

El proyecto cuenta con muy buena documentación. Basta con leer un ratito el (muy amigable) manual de usuario en línea, para comenzar a reemplazar los viejos Makefiles con archivos de configuración de SCons, es increíblemente sencillo, fíjense el siguiente ejemplo.

Este es el Makefile que escribí hace algún tiempo para compilar mi Raytracer sobre Fedora Linux:

APP=raytracer
CXXFLAGS=-Wall -O3
CXXLIBS=-lSDL
OBJECTS=color.o point3d.o myutils.o esfera.o light.o raytracer.o

%.o: %.cpp
g++ -c $(CXXFLAGS) $< -o $@

all: $(OBJECTS)
g++ $(OBJECTS) $(CXXLIBS) -o $(APP)

clean:
rm -f *.o $(APP)

Ahora, este es el archivo SConstruct equivalente (escrito por alguien que no sabía SCons hace 1 hora):

Program(“raytracer”, Split(“color.cpp point3d.cpp myutils.cpp esfera.cpp light.cpp raytracer.cpp”), LIBS=”SDL”, CCFLAGS=[“-O3”, “-Wall”])

Realmente impresionante. SCons rastrea las dependencias entre archivos fuente y provee las directivas para limpiar automáticamente.

SCons se encuentra liberado bajo una licencia MIT y se puede descargar gratuitamente. En Fedora pueden instalarlo utilizando yum.

Si te interesó este post, puede que también te interese…

This entry was posted in C++, Programacion, Software, Tutoriales. Bookmark the permalink.