Publicado el 7 de Abril del 2019
1.006 visualizaciones desde el 7 de Abril del 2019
761,8 KB
36 paginas
Creado hace 10a (21/04/2015)
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Simplificando el desarrollo software con CMake
Luis Roberto Morales Iglesias
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Índice general
1
Introducción
2 Primeros pasos
3 Comandos habituales
4 Otras funcionalidades
5 CMake en JdeRobot
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Índice general
1
Introducción
2 Primeros pasos
3 Comandos habituales
4 Otras funcionalidades
5 CMake en JdeRobot
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
3
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
¿Qué es CMake?
CMake es una familia de herramientas
multiplataforma y de código abierto diseñada para la
compilación completa, prueba y empaquetado del
software.
Orientado para compilación de C y C++ mediante el uso de
makefiles.
Extensible y con soporte para otros lenguajes.
http://cmake.com
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
4
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Índice general
1
Introducción
2 Primeros pasos
3 Comandos habituales
4 Otras funcionalidades
5 CMake en JdeRobot
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
5
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Un proyecto software visto por CMake
CMake distingue dos árboles del proyecto:
Árbol fuente Contiene el código fuente, los CMakeLists y
ficheros generadores.
Árbol binario Contiene los makefiles, los binarios generados
y otros ficheros generados en el proceso de
llamada a CMake.
Estos árboles pueden tener la misma (in-source) o distinta
(out-of-source) raíz en el sistema de archivos.
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
6
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Configuración y ejecución: CMakeLists.txt
Contiene todas las órdenes necesarias para la generación,
compilación, pruebas...
Las órdenes no son sensibles a mayúsculas.
Ejemplo básico:
cmake_minimum_required (VERSION 2.8.11)
project (HELLO)
add_executable (hello hello.cpp)
Proyectos modulares: CMakeLists distribuidos
(add_subdirectory)
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
7
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Configuración y ejecución: CMake
Entorno gráfico: cmake-gui
Entorno basado en texto: ccmake
Línea de comandos: cmake
Parámetros de ejecución
Ejecución de CMake:
Ruta al directorio con el CMakeLists
pincipal
Parámetros propios de CMake (ayuda,
depuración, opciones de compilación, ...)
Parámetros definidos por el desarrollador
a rellenar por el usuario
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
8
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
La caché de CMake: CMakeCache.txt
CMake almacena el valor de todas las variables resueltas
durante la fase de configuración
En proyectos con parámetros jerárquicos, se requieren
múltiples pases de configuración
La caché se puede pre-rellenar a través de un script con
órdenes set
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
9
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Índice general
1
Introducción
2 Primeros pasos
3 Comandos habituales
Salida de mensajes y control de variables
Generación de binarios
Otras operaciones útiles
4 Otras funcionalidades
5 CMake en JdeRobot
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
10
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Salida de mensajes y control de variables
Índice general
1
Introducción
2 Primeros pasos
3 Comandos habituales
Salida de mensajes y control de variables
Generación de binarios
Otras operaciones útiles
4 Otras funcionalidades
5 CMake en JdeRobot
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
11
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Salida de mensajes y control de variables
Salida de mensajes: message
message([<modo>] "mensaje a mostrar"...)
Se pueden mostrar desde mensajes sencillos de una cadena de
texto hasta otros más elaborados dependientes de variables
Los modos disponibles son:
Sin modo: información no categorizada.
Estado (status)
Advertencia (warning): continúa la generación
Adv. a desarrollador (author_warning)
Fallo (send_error): continúa pero omite la generación
Fallo grave (fatal_error): interrumpe el proceso
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
12
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Salida de mensajes y control de variables
Variables en CMake
Permiten mantener estados, acceder a información del sistema
o intercambiar datos entre los diversos componentes que
intervienen en la generación del proyecto
Tipos definidos:
Filepath - ruta a archivo
Path - ruta a directorio
String - Cadena de texto
Bool - Booleano
Internal - String de uso interno
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
13
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Salida de mensajes y control de variables
Variables en CMake
Según su almacenamiento y persistencia
Regulares Las utilizadas en exclusiva por los CMakeLists,
pueden crearse durante su ejecución o estar ya
rellenas al iniciar
Caché Las persistentes entre llamadas, utilizadas como
selección de opciones o interación con el usuario
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
14
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Salida de mensajes y control de variables
Algunas variables interesantes
CMAKE_MODULE_PATH Ruta donde buscar por defecto
módulos de cmake
CMAKE_INSTALL_PREFIX Raíz de la ruta de destino a la hora
de instalar (make install)
CMAKE_BUILD_TYPE Tipo de generación: depuración,
distribución...
BUILD_SHARED_LIBS Alternar entre generación de bibliotecas
estáticas o dinámicas (si no tienen indicación de
generación)
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
15
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Salida de mensajes y control de variables
Algunas variables preinicializadas
CMAKE_BINARY_DIR Raíz del árbol donde se colocarán los
ficheros generados
CMAKE_SOURCE_DIR Directorio desde el que se lanzó cmake
CMAKE_CURRENT_SOURCE_DIR Directorio donde se
encuentra el CMakeLists que se está procesando
PROJECT_BINARY_DIR Ruta completa a la raíz del árbol donde
se está generando el proyecto
PROJECT_SOURCE_DIR Ruta completa a la raíz del árbol de
los fuentes del proyecto
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
16
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Salida de mensajes y control de variables
Algunas variables preinicializadas
CMAKE_SYSTEM Nombre completo del S/O identificado
CMAKE_SYSTEM_NAME Nombre corto del S/O identificado
UNIX / WIN32 / APPLE / ... Booleanas que indican el sistema
detectado
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
17
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Salida de mensajes y control de variables
Control básico de variables
set(<variable> <valor> [...] [[CACHE <tipo>
<docstring> [FORCE]] | PARENT_SCOPE])
Establece el valor de una variable y sus características
Si se omite el valor, la variable se elimina
PARENT_SCOPE propaga la orden al contexto del CMakeLists
antecesor al que ejecuta
Con la instrucción ENV(<variable>) se puede acceder,
modificar o borrar una variable de entorno
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
18
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Salida de mensajes y control de variables
Control básico de variables
option(<variable> <descripción> <valor>)
CMAKE_DEPENDENT_OPTION(<variable> <descripción>
<valor_inicial> ”<expresión>[;<expresión> ...]”
<valor_si_expresión_falso>)
option establece una variable de caché booleana como
opción para el usuario, inicializada al valor indicado o a OFF
La macro CMAKE_DEPENDENT_OPTION permite establecer
opciones dependientes de otras opciones
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
19
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Salida de mensajes y control de variables
Bucles y estructuras de control
Condicional
Bucle for each
foreach(<variable> <lista>)
...
endforeach(<variable>)
<lista> ::= <arg> [...]
| RANGE (total | inicio fin
| IN (LISTS l1 [...] | ITEMS
[salto])
i1 [...] )
if(<expresión1>)
...
elseif(<expresión2>)
...
else(<expresión1>)
...
endif(<expresión1>)
Bucle while
while(<expresión>)
...
endwhile(<expresión>)
Luis Roberto Morales Iglesias
Simplificando el desarrollo software con CMake
20
Introducción
Primeros pasos
Comandos habituales
Otras funcionalidades
CMake en JdeRobot
Generación de binarios
Índice general
1
Introducción
2 Primeros pasos
3 Comandos habituales
Salida de mensajes y control de variables
Generación de binarios
Otras operaciones útiles
4 Otras funcional
Comentarios de: Simplificando el desarrollo software con CMake (0)
No hay comentarios