Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

Instalar Clang desde ceroInstalar Dependencias para GCC

Instalar CMake desde cero




Instalar CMake desde cero




Copyright

Copyright © José Luis Lara Carrascal  2014-2024   http://manualinux.es



Sumario

Introducción
CMake
Ninja
Parámetros más comunes a tener en cuenta en un proceso de compilación con CMake
Directorios y archivos a tener en cuenta en una instalación con CMake
Traducción al Español de CMake-gui
Iniciamos CMake-gui
Enlaces




Introducción

CMake, es un sistema multiplataforma de configuración, compilación e instalación de paquetes de código fuente. Y sustituto de las herramientas propias de GNU/Linux, más conocidas como GNU Autotools, en proyectos tan conocidos como el entorno de escritorio KDE. La única ventaja que proporciona CMake respecto a las herramientas GNU, es el uso de una versión integrada de Ccache para facilitar la reconfiguración y recompilación de un paquete, ventaja que los usuarios que utilizamos dicha herramienta de forma directa, ya tenemos. También proporciona de forma opcional el uso de una interfaz gráfica de configuración, cuyo traducción al español se publica junto a este manual. Desde el 28-02-2018 se incluye también la instalación de la alternativa a GNU Make, Ninja, soportado por CMake desde la versión 2.8.8.



CMake

Instalación 

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado CMake para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (18.1.3)
* Make - (4.4.1)
* Bison - (3.8.2)
* Flex - (2.6.4)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 21.1.12)
* Cppdap - (1.58.0-a)
* Curl - (8.7.1)
* Expat - (2.6.2)
* JsonCpp - (1.9.5)
* Libarchive - (3.7.3)
* Libbzip2 - (1.0.8)
* Libglvnd - (1.7.0)
* LibRhash - (1.4.4)
* Libuv - (1.48.0)
* Libxml2 - (2.11.7)
* Libzstd - (1.5.6)
* Ncurses - (6.4)
* Nghttp2 - (1.61.0)
* Qt6 - (6.7.0)
* XZ Utils - (5.4.6)
* Zlib - (1.3.1)

Aplicaciones

* Sphinx - (7.2.6)



Descarga

cmake-3.29.2.tar.gz  |  cmake_qt6_locales.diff

Optimizaciones

$ export {C,CXX}FLAGS='-O3 -march=znver3 -mtune=znver3'

Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
Nota informativa sobre las optimizaciones para GCC
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Nota informativa sobre las optimizaciones para Clang
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.

* Los valores de color azul no son compatibles con Clang.

* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
Valores CPU
Genéricos
Intel
AMD

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.
Unified LTO
LTO >> ThinLTO
$ export {C,CXX}FLAGS+=' -flto -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=thin'
ThinLTO >> LTO
$ export {C,CXX}FLAGS+=' -flto=thin -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=full'
La aplicación de esta optimización es aplicable, a partir de Clang 17, y sólo es combinable con LLD.

Parámetros adicionales

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64"
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer el uso de enlazador dinámico para Mold
$ export LDFLAGS+=' -fuse-ld=mold'

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO/ThinLTO de LLD
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=" -Wl,--lto-partitions=$(expr $(nproc) / 2)"
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(expr $(nproc) / 2)"

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf cmake-3.29.2.tar.gz
$ cd cmake-3.29.2
$ patch -Np1 -i ../cmake_qt6_locales.diff
$ export PATH=$(pkg-config --variable=bindir Qt6Core):$PATH
$ ./configure --prefix=/usr --qt-gui --docdir=share/doc/cmake-3.29 \
--mandir=share/man --sphinx-man --sphinx-html --system-libs \
--bootstrap-system-{libuv,jsoncpp,librhash} --parallel=$(nproc)

Explicación de los comandos

patch -Np1 -i ../cmake_qt6_locales.diff : Aplicamos este parche personal para que cmake-gui cargue también las locales en español de Qt5, no sólo la traducción del programa.

export PATH=$(pkg-config --variable=bindir Qt6Core):$PATH : Si hemos instalado Qt6 en un directorio no habitual, le indicamos la ruta correspondiente a los binarios ejecutables del mismo.

--prefix=/usr : Instala CMake en el directorio principal /usr.
--qt-gui : Compila la interfaz gráfica de configuracion, cmake-gui.

--docdir=share/doc/cmake-3.29
: Instala la documentación en /usr/share/doc, en lugar de /usr/doc.
--mandir=share/man : Instala las páginas de manual en /usr/share/man, en lugar de /usr/man.

--sphinx-man : Crea e instala las páginas de manual del programa con Sphinx.
--sphinx-html : Crea e instala la documentación en formato HTML del programa con Sphinx.

--system-libs : Activa el soporte de las versiones instaladas en el sistema de Curl, Expat, JsonCpp, Libarchive, Libbzip2, LibRhash, Ncurses, Nghttp2, Libuv, XZ Utils y Zlib, en el proceso de compilación, en lugar de la integración estática de las mismas con las versiones incluidas en el paquete. 

--bootstrap-system-{libuv,jsoncpp,librhash} : Activa el soporte de las versiones instaladas en el sistema de Libuv, JsonCpp y LibRhash, en el proceso de compilación de la versión interna de CMake, en lugar de la integración estática de las mismas con las versiones incluidas en el paquete. 

--parallel=$(nproc): Establece el número de procesos de compilación en paralelo del proceso de configuración, en función del número de núcleos e hilos que tenga nuestro procesador, tomando como referencia la información mostrada por el sistema con el comando correspondiente. Si nuestro procesador es mononúcleo de un solo hilo, no añadir esta opción.

Parámetros de configuración opcionales

--enable-ccache : Fuerza a utilizar Ccache, ya que el proceso de configuración omite por defecto el uso de este programa, ya sea a través de los correspondientes enlaces simbólicos creados o mediante establecimiento de la variable de entorno alternativa.

--generator=Ninja : Utiliza Ninja en lugar de GNU Make, para la compilación del paquete. No es compatible con GCC, si utilizamos la optimización LTO.

Compilación

$ make 

Parámetros de compilación opcionales  

VERBOSE=1 : Muestra más información en el proceso de compilación.

-j$(nproc): Establece el número de procesos de compilación en paralelo, en función del número de núcleos e hilos que tenga nuestro procesador, tomando como referencia la información mostrada por el sistema con el comando correspondiente. Si nuestro procesador es mononúcleo de un solo hilo, no añadir esta opción.

Instalación como root

$ su
# make install/strip
# update-mime-database /usr/share/mime &> /dev/null

Estadísticas de Compilación e Instalación de CMake

Estadísticas de Compilación e Instalación de CMake
CPU AMD Ryzen 5 5500
MHz 3600 (BoostMax=4457)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.8.5-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Planificador de CPU BMQ
Versión de Glibc 2.39
Enlazador dinámico LLD 18.1.3
Compilador Clang 18.1.3 + Ccache 4.9.1
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de compilación VERBOSE=1 -j12
Tiempo de configuración 1' 02"
Tiempo de compilación 2' 20"
Tiempo total consumido 3' 22"
Archivos instalados 7.484
Mostrar/Ocultar la lista de archivos instalados
Ocupación de espacio en disco 112,1 MB

Directorio de configuración personal

~/.config/Kitware Es el directorio de configuración personal de CMake-gui en nuestro home.

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos los siguientes comandos:

$ su
# make uninstall
# update-mime-database /usr/share/mime &> /dev/null

2) MODO MANUALINUX

El principal inconveniente del comando anterior es que tenemos que tener el directorio de compilación en nuestro sistema para poder desinstalar el programa. En algunos casos esto supone muchos megas de espacio en disco. Con el paquete de scripts que pongo a continuación logramos evitar el único inconveniente que tiene la compilación de programas, y es el tema de la desinstalación de los mismos sin la necesidad de tener obligatoriamente una copia de las fuentes compiladas.

cmake-3.29.2-scripts.tar.gz

$ su
# tar zxvf cmake-3.29.2-scripts.tar.gz
# cd cmake-3.29.2-scripts
# ./Desinstalar_cmake-3.29.2

Copia de Seguridad como root

Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.

$ su
# tar zxvf cmake-3.29.2-scripts.tar.gz
# cd cmake-3.29.2-scripts
# ./Respaldar_cmake-3.29.2

Restaurar la Copia de Seguridad como root

Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_cmake-3.29.2



Ninja

Un sistema de compilación multinúcleo de características similares a GNU Make, pero con un diseño más sencillo que lo hace más rápido a la hora de utilizarlo para compilar paquetes de código fuente. Desde la versión 2.8.8 de CMake, éste puede generar, pasándole el parámetro correspondiente, los archivos de configuración pertinentes para poder compilar el paquete con Ninja.

Instalación 

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado Ninja para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (18.1.3)
* CMake - (3.29.2)
* Make - (4.4.1)
* Re2c - (3.1)



Descarga

ninja-1.12.0.tar.gz

Optimizaciones

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.
Unified LTO
LTO >> ThinLTO
$ export {C,CXX}FLAGS+=' -flto -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=thin'
ThinLTO >> LTO
$ export {C,CXX}FLAGS+=' -flto=thin -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=full'
La aplicación de esta optimización es aplicable, a partir de Clang 17, y sólo es combinable con LLD.

Parámetros adicionales

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64"
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer el uso de enlazador dinámico para Mold
$ export LDFLAGS+=' -fuse-ld=mold'

Establecer el uso de librería estándar de C++ para Libc++
Clang
$ export CXXFLAGS+=" -stdlib=libc++ -I$(llvm-config --includedir)/c++/v1"
$ export LDFLAGS+=" -L$(llvm-config --libdir)"

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO/ThinLTO de LLD
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=" -Wl,--lto-partitions=$(expr $(nproc) / 2)"
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(expr $(nproc) / 2)"

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf ninja-1.12.0.tar.gz
$ cd ninja-1.12.0
$ cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_TESTING=OFF

Explicación de los comandos

-S . -B build : Establece el directorio del código fuente y crea de forma automática el directorio de compilación.

-DCMAKE_INSTALL_PREFIX=/usr : Instala el programa en el directorio principal, /usr.

-DBUILD_TESTING=OFF : Desactiva la compilación de los tests que contiene el paquete.

Compilación

$ make C build

Parámetros de compilación opcionales

Instalación como root

$ su -c "make -C build install/strip"

Estadísticas de Compilación e Instalación de Ninja

Estadísticas de Compilación e Instalación de Ninja
CPU AMD Ryzen 5 5500
MHz 3600 (BoostMax=4457)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.8.6-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Planificador de CPU BMQ
Versión de Glibc 2.39
Librería estándar de C++ Libc++ 18.1.3
Enlazador dinámico LLD 18.1.3
Compilador Clang 18.1.3
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de compilación -v -j12
Tiempo de compilación 6"
Archivos instalados 1
/usr/bin/ninja
Ocupación de espacio en disco 288 KB

Desinstalación como root

1) MODO TRADICIONAL

$ su -c "rm -f /usr/bin/ninja"

2) MODO MANUALINUX

ninja-1.12.0-scripts.tar.gz

$ su
# tar zxvf ninja-1.12.0-scripts.tar.gz
# cd ninja-1.12.0-scripts
# ./Desinstalar_ninja-1.12.0

Copia de Seguridad como root

$ su
# tar zxvf ninja-1.12.0-scripts.tar.gz
# cd ninja-1.12.0-scripts
# ./Respaldar_ninja-1.12.0

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_ninja-1.12.0

Opciones de línea de comandos de Ninja a tener en cuenta
Opción Descripción
-C DIR
Cambia al directorio establecido en DIR, es decir, nos ahorra tener que ejecutar el comando cd para ir a dicho directorio, y ejecutar el comando de compilación en el mismo.
-f ARCHIVO Especifica un archivo de configuración determinado. Por defecto es ninja.build.
-j
Establece un número predefinido (nº) de procesos en paralelo. Por defecto es el número de núcleos que tiene nuestro procesador más dos procesos adicionales. Con lo que es recomendable hacer uso de esta opción, de la misma manera que lo hacemos con GNU Make, ajustando el número al número de núcleos que tiene nuestro procesador.
-k
Define cuántos procesos en paralelo deben de fallar para que la compilación se interrumpa. Por defecto es 1.
-l
No inicia nuevos procesos si el promedio de carga es mayor que nº
-n
Ejecuta una simulación del proceso de compilación sin compilar nada.
-v
Muestra más información en el proceso de compilación.
install Instala el paquete compilado.
install/strip Instala el paquete compilado con CMake eliminando los símbolos innecesarios para su ejecución. Si utilizamos Ninja con el sistema de compilación, Meson, la opción de eliminación de símbolos hay que establecerla en las opciones de configuración del paquete con Meson, con el parámetro --strip.
clean Borra la compilación generada.



Parámetros más comunes a tener en cuenta en un proceso de compilación con CMake

En la tabla que pongo a continuación muestro los parámetros más comunes utilizados con CMake. Los parámetros siempre deben ir precedidos del prefijo -D, que puede ir separado o pegado al parámetro, aunque es preferible que vaya pegado, excepto las opciones propias de línea de comandos del programa. Si el archivo de configuración del paquete, CMakeList.txt, no contiene dicho parámetro, éste no será aplicado en el proceso de compilación, y se nos mostrará un mensaje cuando finalice el proceso de configuración del paquete. Con las GNU Autotools, podemos saber antes de ejecutar el script de configuración, las opciones posibles de configuración, con CMake esto no es posible. Y tendremos que echar mano del archivo CMakeCache.txt que se crea en el directorio de compilación, para saber qué podemos utilizar y qué no podemos utilizar como parámetro de configuración.

Para saber todos los parámetros de configuración aceptados de forma genérica por CMake, basta ejecutar el siguiente comando en una ventana de terminal:

$ cmake --help-variable-list

Los parámetros incluidos en el archivo CMakeCache.txt pueden ser reducidos en la línea de comandos, omitiendo parte del mismo. Un ejemplo:

CMAKE_INSTALL_PREFIX:PATH=/usr/local es lo mismo que CMAKE_INSTALL_PREFIX=/usr/local, nos podemos comer siempre el contenido incluido entre los dos puntos y el signo igual, y también los dos puntos.

He puesto los más utilizados en los manuales de la web, no todos los que soporta CMake. Todos los valores de las opciones que no contengan espacios, pueden escribirse sin necesidad de utilizar comillas o comillas simples.

Parámetros más comunes a tener en cuenta en un proceso de compilación con CMake
Opción Descripción
-S Establece el directorio del código fuente que contiene el archivo de configuración CmakeLists.txt. Si es el directorio raíz del paquete basta con poner un punto, para establecerlo: -S .
-B build Crea de forma automática el directorio de compilación. Luego, podemos entrar en el mismo e iniciar el proceso de compilación o, hacerlo con el comando ninja o make -C build, desde el directorio raíz del paquete. También se puede utilizar directamente CMake para compilar e instalar el paquete. Un ejemplo:

Comando de compilación
$ cmake --build build -v -j$(nproc)

Donde build es el directorio de compilación, '-v' hace que se muestre más información en el proceso de compilación, independientemente de que se utilice make o ninja y, por último, '-j$(nproc)' establece el número de procesos de compilación en función del número de núcleos e hilos que tenga nuestro procesador.

Comando de instalación
$ cmake --install build --strip

Donde build es el directorio de compilación y '--strip' elimina los símbolos innecesarios para ejecutar el programa en cuestión. 
-DCMAKE_C_COMPILER_LAUNCHER= Establece el compilador caché (ccache, buildcache, sccache, etc.) que será utilizado en una compilación de código escrito en C. Si utilizamos los correspondientes enlaces simbólicos, esto no es necesario hacerlo casi nunca.
-DCMAKE_CXX_COMPILER_LAUNCHER= Establece el compilador caché (ccache, buildcache, sccache, etc.) que será utilizado en una compilación de código escrito en C++. Para abreviar podemos hacer uso de las siempre útiles llaves, para reducir este parámetro y el anterior a un sólo parámetro. Un ejemplo:

-DCMAKE_{C,CXX}_COMPILER_LAUNCHER=buildcache
-DCMAKE_INSTALL_PREFIX=
Establece la ruta de instalación del paquete.
-DCMAKE_BUILD_TYPE= Establece el modo de optimización a usarse en el proceso de compilación. Si queremos que el establecido en la variable de entorno correspondiente (-O3), no sea sobrescrito por el predefinido del paquete, lo recomendable es utilizar el valor Release en este parámetro concreto.
-DLIB_INSTALL_DIR= Establece el directorio de instalación de las librerías que contengan un determinado paquete.
-DCMAKE_PREFIX_PATH=
Establece la ruta a los archivos de configuración de CMake, de una dependencia del paquete concreta, en el caso de que la hayamos instalado en un directorio no habitual del sistema. Un ejemplo con la ubicación de la instalación de Qt5, utilizando pkg-config para localizar la ruta a dichos archivos:

-DCMAKE_PREFIX_PATH=$(pkg-config --variable=libdir Qt5Core)/cmake
-G 
Establece el sistema de compilación a utilizar para la instalación del paquete en cuestión. Si queremos utilizar Ninja en lugar del tradicional GNU Make, añadimos la siguiente opción al comando de configuración de CMake:

-G Ninja

Siempre que hagamos una modificación de parámetros ya establecidos, en línea de comandos o en modo gráfico con Cmake-gui, es necesario borrar previamente el contenido del directorio de compilación, para que las modificaciones introducidas sean efectivas. 

A medida que se han ido publicando nuevas versiones de CMake, se ha ido implementando una mejor integración del mismo con las variables de entorno utilizadas habitualmente en procesos de compilación nativos del sistema. Hasta el punto que, a día de hoy, CMake acepta de forma automática, la mayoría de ellas: CFLAGS, CXXFLAGS, CPPFLAGS, LDFLAGS, etc.

Por último, con CMake la opción de comando para eliminar los símbolos innecesarios para la ejecución de los binarios es install/strip en lugar de install-strip que es el utilizado por las GNU Autotools. Esta opción de instalación es independiente de si utilizamos make o ninja para compilar el paquete en cuestión.



Directorios y archivos a tener en cuenta en una instalación con CMake

Utilizando como ejemplo, la instalación de OpenAL.

openal-soft-1.23.1 Es el directorio raíz del paquete de código fuente, y el tomado como referencia para realizar el proceso de configuración, siempre y cuando éste contenga el archivo de configuración principal CMakeList.txt, a partir del cual se genera el proceso de configuración.
openal-soft-1.23.1/build Es el directorio de compilación en el que se generarán los binarios del paquete de código fuente. Cuando tengamos problemas en la configuración del paquete, es conveniente siempre borrar el contenido de este directorio y volver a empezar.
openal-soft-1.23.1/CMakeLists.txt Es el archivo de configuración principal del paquete, contiene todas los parámetros de configuración del mismo, pero es más fácil leerlos en el que viene a continuación.
openal-soft-1.23.1/build/CMakeCache.txt Es el archivo caché de la configuración generada una vez hemos ejecutado el comando de configuración. Si tenemos que añadir o quitar parámetros al comando de configuración, este archivo es bastante más legible que el principal de configuración.
openal-soft-1.23.1/build/install_manifest.txt Es el archivo de registro de los archivos instalados del paquete, y se genera en el proceso de instalación del mismo.



Traducción al Español de CMake-gui  

Descarga

CMake-gui_es-ML0.run

Firma Digital  Clave pública PGP

CMake-gui_es-ML0.run.asc 

Verificar la firma digital del paquete

$ gpg --import manualinux.asc
$ gpg --verify CMake-gui_es-ML0.run.asc CMake-gui_es-ML0.run

Instalación como root

$ su -c "sh CMake-gui_es-ML0.run"



Iniciamos CMake-gui  

Sólo nos queda teclear en una terminal o en un lanzador el comando cmake-gui, y el programa aparecerá en la pantalla. Es una interfaz gráfica de configuración, pero no de compilación, ni de extracción de paquetes. Eso lo tendremos que hacer de forma manual, desde la línea de comandos. También se puede utilizar ccmake como interfaz Ncurses desde la línea de comandos, pero no está traducida al español. 


Captura CMake-gui - 1


Captura CMake-gui - 1


Captura CMake - 3




Enlaces


http://www.cmake.org >> La web de CMake.

http://ninja-build.org >> La web de Ninja.


Foro Galería Blog


Actualizado el 11-04-2024

Instalar CMake desde cero

Instalar Clang desde ceroInstalar Dependencias para GCC