CMake: Instalar un paquete
Esta receta explica cómo utilizar, fundamentalmente, el comando INSTALL de CMake para crear objetivos de instalación.
El comando INSTALL
CMake proporciona el comando INSTALL que facilita en gran medida seleccionar los componentes de nuestro proyecto que queremos instalar y dónde. En esta receta nos vamos a centrar en un uso básico del comando. Para algo más avanzado nada mejor que la documentación.Ejemplo
Supongamos que queremos instalar un binario y dos versiones de una misma librería: una estática y otra dinámica. El código CMake para este caso podría ser el siguiente:CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
# Librerías
ADD_LIBRARY(dummy_shared SHARED dummy.cpp)
SET_PROPERTY(TARGET dummy_shared PROPERTY SOVERSION 1.0)
ADD_LIBRARY(dummy_static STATIC dummy.cpp)
SET_TARGET_PROPERTIES(dummy_shared dummy_static PROPERTIES OUTPUT_NAME dummy)
# Ejecutable
ADD_EXECUTABLE(hello hello.cpp)
# ... el código anterior aquí
SET_TARGET_PROPERTIES(dummy_shared
PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/dummy.h"
INSTALL(TARGETS hello dummy_static dummy_shared
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib/static
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include)
- Al objetivo hello se le debe tratar como un ejecutable (RUNTIME) y debe instalarse en el directorio ${CMAKE_INSTALL_PREFIX}/bin.
- Al objetivo dummy_static se le debe tratar como una librería estática (ARCHIVE) y debe instalarse en el directorio ${CMAKE_INSTALL_PREFIX}/lib/static.
- Al objetivo dummy_shared se le debe tratar como una librería dinámica (LIBRARY) y debe instalarse en el directorio ${CMAKE_INSTALL_PREFIX}/lib.
- Finalmente, las cabeceras públicas (PUBLIC_HEADER) configuradas a lo largo del programa deben instalarse en ${CMAKE_INSTALL_PREFIX}/include.
¿Cómo personalizar mi instalación?
Supón que tienes un directorio en tu home llamado ~/usr y que las variables de entorno pertinentes las tienes configuradas a ese path. Estaría muy bien que pudieras hacer que CMAKE_INSTALL_PREFIX tuviera un valor concreto para instalar el software en ese lugar. Para ello, simplemente ejecuta lo siguiente:$ cmake -DCMAKE_INSTALL_PREFIX=~/usr ..
$ cmake -DCMAKE_INSTALL_PREFIX=~/usr -DCMAKE_PREFIX_PATH=~/usr ..
Referencias
[ show comments ]
blog comments powered by Disqus