2012-04-18 10 views
5

Estoy usando cmake y cpack para construir mi proyecto y compilar paquetes. Estoy creando algunos ejecutables en mi proyecto, llamémoslos EXE1 y EXE2.cmake: instala ejecutables y crea enlaces a ellos

Al crear versiones diferentes de estos ejecutables, quiero ponerle un nombre para que refleje la versión del ejecutable (digamos EXE1_1.0.0). Puedo cambiar el nombre de la salida de un objetivo haciendo set_target_properties.

Sin embargo, ahora cuando se hace una install, quiero hacer crear un enlace simbólico a este nombre versionado del ejecutable, es decir, yo quiero tener

  • la "versionado" ejecutables instalados en bin directorio, es decir EXE1_1.0.0
  • crear un enlace simbólico al ejecutable "versionado", es decir, crear enlace simbólico EXE1, lo que apunta a EXE1_1.0.0

Puede alguien sugerir cómo ¿hacer esto?

La segunda pregunta es: ¿Cómo instalar los archivos de configuración/etc/MYPROJECT/directory? ¿Qué DESTINO debo usar para los archivos de configuración, como usar bin para ejecutables y lib para las bibliotecas? ¿Está utilizando una ruta absoluta como /etc como una práctica aceptable con cmake?

+0

usted debe responder a su propia pregunta aquí mediante la publicación de la respuesta dada a usted en la lista de correo CMake. – Fraser

+0

Gracias por señalar esto. – Lazylabs

Respuesta

3

hice esta pregunta en la lista de correo cmake posteriormente, y esta es la respuesta que recibí:

La validez de la respuesta dependerá de qué versión CMake utiliza y qué conjunto de plataforma en la que desea apoyo.

enlaces simbólicos no son tan portátil

a) La creación no puede ser [actualmente] realiza de forma portátil, pero si usted es focalización Unix que es posible utilizar cmake -E create_symlink para crear una.

b) Dependiendo del generador CPack que utilice y CMake/CPack versión
, los enlaces simbólicos pueden estar integrados en el paquete o no.

es decir, CPack pre 2.8.7 no puede crear un archivo ZIP que contenga enlaces simbólicos CPack 2.8.8 puede hacerlo ahora.

continuación, puede utilizar una instalación (guión ... o instalar (CÓDIGO ...) para hacer que durante la instalación.

Otra opción si está utilizando RPM es usar paquete específico después de instalar guión. cpack --help variable CPACK_RPM_POST_INSTALL_SCRIPT_FILE

esta última solución de su curso sólo funcionan para cPack RPM.

por segunda pregunta

Puede utilizar la ruta de destino absoluta, se deben manejar solo bien por CPack DEB y RPM, no sé por otro.

Si su software debe instalarse en Windows, esto no funcionará con generador de archivos (ZIP, TGZ, etc ...) y/o NSIS.

puede ser usted puede hacer algo como:

si (UNIX Y NO MANZANA) establecido (CONFDEST "/ etc/$ {CMAKE_PROJECT_NAME}") más() set (CONFDEST "etc") ENDIF()

instalar (ARCHIVOS yourconffile DESTINO $ {} CONFDEST)

Cuestiones relacionadas