una tipos ruta redes partir para nombre dominio determinar comandos comando bgp install cmake prefix

install - tipos - comandos para determinar la ruta de una red a partir de una ip o nombre de dominio



Establezca el prefijo de instalación automáticamente en la ruta personalizada si no se especifica explícitamente en la línea de comando (2)

Para algunas pruebas internas, me gustaría que el prefijo de instalación se establezca de manera predeterminada en un subdirectorio del directorio de compilación, a menos que el usuario lo invalide explícitamente. Sé que el usuario puede especificar un prefijo de instalación de la siguiente manera:

$ cmake -DCMAKE_INSTALL_PREFIX=/foo/bar ..

Pero si el usuario no especifica esto, debe hacerlo de forma predeterminada, por ejemplo, ${PWD}/installed .

La variable CMAKE_INSTALL_PREFIX ya está configurada en /usr/local , por lo que no puedo simplemente verificar si se ha desactivado / vaciado antes de configurarlo.

Mi solución actual es agregar un conmutador personalizado que el usuario debe invocar para especificar que se CMAKE_INSTALL_PREFIX variable CMAKE_INSTALL_PREFIX :

option(ENABLE_INSTALL_PREFIX "Install build targets to system (path given by ''-DCMAKE_INSTALL_PREFIX'' or ''${CMAKE_INSTALL_PREFIX}'' if not specified)." OFF) if ( ENABLE_INSTALL_PREFIX ) set (CMAKE_INSTALL_PREFIX installed CACHE PATH "Installation root") else() set (CMAKE_INSTALL_PREFIX installed CACHE PATH "Installation root" FORCE) endif()

Mis preguntas son:

(a) ¿Hay algún problema con lo anterior, más allá de la molestia de la bandera extra que se debe pasar a CMake para que CMAKE_INSTALL_PREFIX tenga un efecto?

(b) ¿Existe una manera mejor, más limpia, más robusta, más idiomática y / o menos molesta de lograr lo anterior?

Gracias.


CMake establece la variable booleana CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT si CMAKE_INSTALL_PREFIX no se ha especificado explícitamente y se inicializa a su configuración predeterminada. Puede anularlo de la siguiente manera:

if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set (CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/installed" CACHE PATH "default install path" FORCE ) endif()


Hace unos años, quería intentar lo mismo. Lamentablemente, nunca pude encontrar una solución totalmente satisfactoria. En cambio, elegí usar una expresión regular para verificar si CMAKE_INSTALL_PREFIX coincide con el valor predeterminado.

Por ejemplo, en Windows utilizo lo siguiente para crear el directorio de install en el directorio de compilación:

if ( CMAKE_INSTALL_PREFIX MATCHES "^C:/Program Files" ) # Override to an "Install" directory in the current build-dir message( STATUS " Install-prefix was at default -> forcing it to the build-dir" ) message( STATUS " ''set( CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/install )''" ) set( CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/install ) endif ( CMAKE_INSTALL_PREFIX MATCHES "^C:/Program Files" )

El mayor problema con esta construcción es que puede especificar manualmente que CMake debería instalarse en C:/Program Files . Al distribuir mi herramienta con un instalador NSIS, esto no es un problema (para mí).

Tal vez podrías probar algo similar en Unix.