Temas específicos (topics)
Introducción a CMake
Fuente(s):
El sistema CMake facilita la construcción, prueba y empaquetado de projectos C/C++, por lo que sus creadores afirman que: CMake ayuda a los grupos a desarrollar código multi-plataforma, bien-probado y de alta calidad.
En general, se trata de un conjunto de herramientas, desarrolladas bajo el esquema de código abierto, que han sido diseñadas para construir, probar y empaquetar software.
El programa homónimo cmake
es utilizado para la creación de especificaciones de control del proceso de construcción (e.g. compilación y enlazado) de programas. De este modo, mediante un conjunto de ficheros de configuración independientes de plataforma, pueden ser generados ficheros de construcción nativos para cada plataforma destino (v.gr. ficheros Makefile, ficheros de solución Visual Studio, etc.).
Apuntes de lecturas (readings)
Lectura: «CMake Tutorial» ―Kitware, Inc.
Fuente(s):
El siguiente tutorial muestra una secuencia de pasos para la configuración de un proyecto CMake, desde la configuración mínima hasta la más sofisticada:
Paso 1a: Un punto básico para el inicio
Para especificar cómo construir un projecto mínimo con CMake, debemos disponer de al menos dos (2) ficheros:
- Un fichero con nuestro programa fuente (e.g.
tutorial.c
), y - Un fichero con nuestra configuración de construcción (i.e.
CMakeLists.txt
).
A continuación se muestra el programa fuente usado para este ejemplo:
#include <stdio.h>
int
main (void) {
printf("Hello, CMake!\n");
return 0;
}
Por su parte, el fichero de construcción mínimo requerido por CMake consiste de sólo tres (3) líneas de código:
cmake_minimum_required(VERSION 2.6)
project(tutorial)
add_executable(tutorial tutorial.c)
En la primera línea indicamos la versión mínima del programa CMake, que necesitaremos para generar los ficheros de construcción de nuestro proyecto. En la segunda línea definimos el nombre de éste; mientras que mediante la tercera, especificamos que deseamos construir un programa ejecutable a partir de nuestro fichero fuente de ejemplo.
Ahora, para generar los ficheros de construcción nativos (digamos para Ninja en Microsoft Windows), debemos ejecutar la siguiente secuencia de comandos:
C:\Examples\Tutorial> mkdir build
C:\Examples\Tutorial> cd build
C:\Examples\Tutorial\build> cmake -G Ninja ..
Finalmente, podremos construir nuestro proyecto haciendo una llamada a Ninja:
C:\Examples\Tutorial\build> ninja
Paso 1b: …
TODO
Lectura: «Mastering CMake» ―Ken Martin & Bill Hoffman
Chapter 1: ¿Por qué CMake?
-
CMake es un generador de ficheros de construcción de proyectos de software, que permite a los desarrolladores especificar los parámetros de construcción de una manera simple, mediante un fichero en formato de texto, independiente del entorno de desarrollo.
-
Dicho fichero, por lo general llamado
CMakeLists.txt
, es utilizado por CMake para generar ficheros de construcción de , adecuados a cada herramienta de desarrollo de determinadas plataformas. -
Son ejemplos de dichos ficheros de construcción nativos: los espacios de trabajo o ficheros de solución Microsoft Visual Studio, ficheros
Makefile
tanto de UNIX o Linux como de NMake, ficheros Ninja, entre otros. -
Se encarga de gestionar aspectos de construcción de software tales como: compilación cruzada, instrospección del sistema y construcciones personalizables de una manera simple, funcionando como un único sistema de construcción multiplataforma.
-
Entre las facilidades que puede aportar CMake a la construcción de un proyecto convencional, se encuentran:
-
Habilidad para construir el proyecto fuera del árbol de directorios fuente.
-
Habilidad para crear comandos personalizados complejos para la generación de ficheros.
-
Habilidad para seleccionar componentes opcionales al momento de la configuración.
-
Generación automática de diferentes espacios de trabajo a partir de un fichero de texto simple.
-
Generación automática de dependencias y soporte a la construcción paralela.
-
-
Adicionalmente, aporta otras características relacionadas con la construcción multiplataforma:
-
Permite identificar el orden de los bits más significativos de la máquina de construcción.
-
Permite configurar ficheros para múltiples plataformas, a partir de un único fichero de especificación del proyecto.
-
Soporta la construcción multiplataforma de librerías compartidas.
-
Facilita la configuración dependiente de la información del sistema (ubicación de ficheros, disponibilidad de librerías, entre otros).
-
Permite generar ficheros de cabecera con la información detectada del sistema anfitrión.
-
Facilita añadir opciones de configuración que serán reflejadas en los ficheros de cabecera generados.
-
TODO
1.1 Historia de CMake
El desarrollo de CMake comenzó en 1999 como parte del Insight Toolkit (ITK, www.itk.org) financiado por el US National Library of Medicine.
TODO
1.2 ¿Por qué no usar Autoconf?
TODO
1.3 ¿Por qué no usar JAM, qmake, SCons, y/o Ant?
TODO
1.4 ¿Por qué no hacer un script por sí mismos?
TODO
1.5 ¿En qué plataformas funciona CMake?
TODO