Noticias - 31/05/2025 | Madre mía que caló hace 🥵          🌍          News - 31/05/2025 | Damn it's so hot 🥵

viernes, 11 de julio de 2025

¿Hay alguna diferencia entre compilar y 'buildear'?

Ambos términos se usan a diario en ambientes de desarrollo de software: "J****, cuánto tarda en compilar.", "¿Has buildeado después de ese último cambio?"... Realmente, se utilizan casi del mismo modo, y yo me incluyo en esto. Pero, ¿es realmente correcto referirse indistintamente a compilar o buildear un proyecto como si significase lo mismo?

Como este no es un blog comercial de esos que tienen anuncios y se preocupan por el SEO y esas cositas, puedo decir ya la respuesta je je. No, no son lo mismo, aunque están intrínsicamente relacionados. Compilar es un proceso en el cual se toma un archivo de código (archivo fuente) y se pasa a código máquina (entendible por el procesador), generándose uno o varios objetos temporales (*.o) en función de cuántos archivos de código tengan que procesarse.

Estos objetos, más tarde, serán utilizados como input para otro llamado enlazado (linking en inglés). Ambos, compilación y enlazado, son algunos de los engranajes de un procedimiento funcional mayor al que nos referimos coloquialmente como 'buildear'.

[ 50%] Building CXX object CMakeFiles/mi_programa.dir/src/main.cpp.o
/usr/bin/g++   -I../include -o CMakeFiles/mi_programa.dir/src/main.cpp.o -c ../src/main.cpp
[100%] Building CXX object CMakeFiles/mi_programa.dir/src/utils.cpp.o
/usr/bin/g++   -I../include -o CMakeFiles/mi_programa.dir/src/utils.cpp.o -c ../src/utils.cpp
[100%] Linking CXX executable mi_programa
/usr/bin/g++  CMakeFiles/mi_programa.dir/src/main.cpp.o CMakeFiles/mi_programa.dir/src/utils.cpp.o  -o mi_programa

El ejemplo de arriba muestra una salida de terminal típica y simplificada producto de buildear un proyecto usando cmake y make. Puede verse cómo se van compilando archivos como main.cpp y utils.cpp y se van generando sus respectivos objetos temporales, que más tarde se enlazan al ejecutable final mi_programa.

También puede llamar la atención que se está usando el término Building para referirse a que está transformando un archivo fuente en un objeto; y yo acabo de explicar que a eso se le llama compilar y no buildear.

¿Está CMake equivocado y yo soy un lince? Dudo mucho que lo primero sea así. Lo que pasa es que make no dice específicamente Compiling porque usa Building para mostrar el progreso general del build, y así detallar el tipo de archivo que genera (objeto) y el lenguaje (CXX = C++).

No hay comentarios:

Publicar un comentario