descarga - cmake vs make
ConfiguraciĆ³n de CMAKE_INSTALL_PREFIX desde el archivo CMakeLists.txt (1)
¿Cómo configuro CMAKE_INSTALL_PREFIX en mi archivo raíz CMakeLists.txt?
He estado haciendo
cmake_minimum_required(VERSION 2.8)
project(MyProject)
# Set default install prefix
set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR})
con la esperanza de que las instalaciones se destinen a carpetas en el árbol fuente. Es decir,
install(TARGETS my_exe DESTINATION bin/)
se instalaría en ${CMAKE_SOURCE_DIR}/bin/
. En cambio, sigue tratando de escribir en /usr/local/bin
(el predeterminado para Ubuntu 14.04).
Intenté las respuestas a esta pregunta , pero aún obtengo el usr/local/
estándar como mi CMAKE_INSTALL_PREFIX cuando reviso CMakeCache.txt.
La única solución de trabajo que tengo es hacer
install(TARGETS my_exe DESTINATION "${CMAKE_SOURCE_DIR}/bin/")
pero esto elimina la capacidad del usuario para especificar dónde se encuentra el directorio bin para instalar.
tl; dr Me gustaría make install
se instale automáticamente en ${CMAKE_SOURCE_DIR}
de forma predeterminada, en lugar de /usr/local/
.
Los desarrolladores de CMake sugieren usar el patrón dado para cambiar el valor predeterminado de CMAKE_INSTALL_PREFIX dentro de CMakeLists.txt
:
# Use this snippet *after* PROJECT(xxx):
IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
SET(CMAKE_INSTALL_PREFIX <path> CACHE PATH <comment> FORCE)
ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
Usando ese enfoque
Use this snippet *before* PROJECT(xxx):
SET(CMAKE_INSTALL_PREFIX <path> CACHE PATH <comment>)
no es recomendado :
... la solución depende de los detalles de implementación del comando PROJECT y es muy frágil ya que funciona "accidentalmente" para algunas versiones de CMake. No lo considero como una opción en absoluto.