Tabla de contenidos
Herramientas como Make o CMake son responsables de la gestión de la construcción. Las herramientas correspondientes se encargan de las tareas recurrentes, lentas y propensas a errores en el desarrollo de software.
Make y CMake son herramientas de gestión de compilación que se utilizan para automatizar la creación de software. Realiza tareas recurrentes y simples que, alternativamente, deben realizarse en pasos únicos a través de la consola. Gracias a la automatización, la herramienta evita errores durante la construcción y, por lo tanto, permite resultados reproducibles y fiables. CMake genera automáticamente descripciones formales del proceso de creación para diferentes plataformas.
Make: los inicios de las herramientas de gestión de compilación
Make fue creado en 1976 para simplificar y hacer más eficiente el complejo proceso de creación de software en Unix. Anteriormente, era una práctica común controlar manualmente la compilación en pasos individuales a través de la consola.
El procesamiento paso a paso era necesario porque el hardware en ese momento estaba muy limitado y, por lo tanto, no permitía operaciones importantes. Cuanto más complejo era un proyecto, más confuso se volvía este proceso ya monótono. Incluso con un trabajo cuidadoso, los pequeños errores pueden aparecer rápidamente.
Por lo tanto, la idea detrás de Make era regular automáticamente la construcción mediante una descripción formal y, por lo tanto, hacerla más confiable y ahorrar tiempo. Esta descripción contiene una especie de manual de construcción para el archivo que se creará y se puede llamar con el comando «make» en la consola. La herramienta se hace cargo del laborioso proceso de creación y crea automáticamente un archivo ejecutable a partir de las especificaciones.
Make también puede resolver dependencias y, según el momento en que se modificó un archivo, decide si es necesario volver a generarlo. Make no tiene que usarse necesariamente para software. En general, puede crear nuevos archivos a partir de archivos fuente y, por lo tanto, es muy versátil. Mientras tanto, Make ha inspirado muchas ramas como CMake, NMAKE o GNU Make.
CMake: herramienta de gestión de compilación independiente de la plataforma
CMake es una herramienta multiplataforma que genera archivos MAKE para sistemas operativos similares a Unix como Linux o macOS, así como para Windows. CMake también admite varios compiladores y enlazadores de C / C ++ . Además, la herramienta también puede manejar Java y Fortran.
Una diferencia importante con respecto a la marca clásica es que CMake en sí no genera ningún archivo ejecutable. En cambio, genera información que puede ser utilizada por otras herramientas.
Antes de que existiera CMake, se tenía que escribir manualmente un Makefile separado para cada plataforma y para cada compilador y enlazador. CMake automatiza este proceso utilizando instrucciones de construcción independientes de la plataforma para Makefiles. La herramienta se puede manejar cómodamente a través de una interfaz gráfica. Alternativamente, las funcionalidades individuales también se pueden utilizar a través de la consola.
Makefiles: planos para la creación de software
Tanto Make como CMake funcionan con archivos de descripción, los llamados Makefiles. Estos archivos contienen todas las instrucciones necesarias para crear una aplicación, como rutas y dependencias. El Makefile es, por así decirlo, el manual de construcción, según el cual se crea un programa ejecutable a partir de componentes individuales.
Los archivos Makefiles tienen su origen en el mundo Unix. Se ha utilizado con Windows durante mucho tiempo. Los archivos de descripción de Make se crean a mano y se relacionan exactamente con la plataforma con la que desea trabajar. CMake automatiza la creación de Makefiles.
CMakeLists: el plano del plano
CMake puede generar automáticamente archivos de descripción para múltiples plataformas con poco esfuerzo. Cuando se compila el software, el plan de construcción apropiado para el sistema deseado está disponible automáticamente. Para hacer esto, la herramienta primero necesita una descripción formal, CMakeLists.
Contiene todos los parámetros e instrucciones relevantes para generar un Makefile, por ejemplo, el nombre del proyecto o una lista de los archivos fuente necesarios. Estas instrucciones son mucho más compactas y claras que el Makefile real y, por lo tanto, son más fáciles de mantener y comprender.
También es relativamente fácil integrar cambios rápidamente en todas las plataformas compatibles, ya que se pueden generar diferentes Makefiles a partir de un mismo archivo. Los archivos MAKE en sí mismos ya no se cambian a mano.
Alternativas al Makefile
Con CMake, se pueden generar otros formatos a partir de CMakeLists, incluidos archivos de compilación ninja, proyectos para KDEvelop o XCode y soluciones para Visual Studio. Por tanto, es posible utilizar CMake de forma flexible con diferentes IDE.
De makefile a archivo ejecutable
Make puede crear un archivo ejecutable a partir del propio Makefile terminado. La herramienta organiza la construcción y vinculación del software con los medios que el desarrollador ha especificado en el Makefile.
CMake, por otro lado, solo genera las instrucciones de construcción para varios compiladores y entornos de desarrollo. Estas instrucciones deben transmitirse a las respectivas herramientas nativas para que los archivos fuente se conviertan en un programa ejecutable. Ejemplo: con CMake puede generar Makefiles para NMAKE y luego ejecutarlos en Visual Studio para obtener un programa ejecutable.