cmake - make - ¿Para qué sirve INSTALL_DIR en el comando ExternalProject_Add?
cmake vs make (1)
De lo que encontré en esta discusión https://www.mail-archive.com/[email protected]/msg51663.html (desplácese hasta el final de la página para navegar a través de los mensajes de la secuencia), de hecho, es algo bastante común use CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/contrib
Además, acechando a través del módulo ExternalProject.cmake
descubrí que el único efecto que tiene este directorio es que CMake creará el directorio especificado en INSTALL_DIR antes de hacer cualquier otra cosa.
Además, establecerá la propiedad que puede reunir a través del comando ExternalProject_Get_Property(${project_name} install_dir)
.
Y eso es más o menos.
// A partir de CMake versión 3.2.2
No entiendo el uso de INSTALL_DIR en el comando ExternalProject_Add. Intento usarlo, pero parece que no funciona. Aquí hay un ejemplo de un CMakeLists.txt, usando la biblioteca Eigen que se compila rápidamente:
cmake_minimum_required (VERSION 2.6)
project (example CXX)
include(ExternalProject)
include(ProcessorCount)
set(CMAKE_VERBOSE_MAKEFILE ON)
ProcessorCount(N)
if(NOT N EQUAL 0)
set(CMAKE_BUILD_FLAGS -j${N})
endif()
ExternalProject_Add
(
mylib
PREFIX myprefix
DOWNLOAD_COMMAND wget http://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz && tar xvzf 3.2.4.tar.gz -C mylib --strip-components=1
)
Elegí la siguiente jerarquía de proyectos:
project
CMakeLists.txt
build/
Desde el repositorio de compilación, escribo:
cmake ..
make
El proceso de instalación falla con el siguiente mensaje:
el archivo no puede crear el directorio: / usr / local / include / eigen3.
Quizás necesite privilegios administrativos.
Por lo que yo entiendo, significa que necesito definir un "prefijo" durante el paso de configuración:
cmake -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR ..
Pero, la variable INSTALL_DIR ya está definida en el comando ExternalProject_Add. Sin embargo, aparece el mismo error cuando modifico el valor de INSTALL_DIR agregando
INSTALL_DIR myprefix/src/install
en el comando ExternalProject_Add.
Entonces, ¿para qué sirve INSTALL_DIR? ¿Qué estoy haciendo mal?
Por supuesto, sé cómo proporcionar mi propio comando de configuración para agregar un prefijo y resolver el problema. Pero no es mi pregunta. Mi pregunta es: si tengo que hacer eso, ¿cuál es el propósito de INSTALL_DIR?