2012-01-23 10 views
6

Con make install puedo copiar mis binarios, configuraciones, etcétera, en una carpeta de destino para su ejecución.cmake "make install" a la máquina remota?

Ahora tengo la siguiente situación: tenemos una configuración de la máquina virtual como un anfitrión acumulación, y una máquina Linux verdadera diferentes como una plataforma objetivo.

Me gustaría tener make install copiar los archivos directamente en una carpeta en mi máquina remota (a través de scp o similar). ¿Cómo puedo lograr eso?

+0

Bueno, vamos a ejecutar 'scp'. El prefijo –

Respuesta

1

make puede funcionar con un prefijo específico durante la instalación:

make prefix=$dest/usr install 

una solución a su problema es

  • montar el sistema de archivos de la máquina de destino en su máquina de construcción. Esto se puede hacer a través de NFS (persistente) o por medio de sshfs (más fácil),
  • conjunto $ dest al punto de montaje y ejecutar el comando anterior
+0

no parece hacer nada. DESTDIR funciona (como en la otra respuesta). Sin embargo, el montaje es el camino a seguir para que todo funcione a la vez (y el servidor puede ser remoto usando un montaje SSH para computadoras fuera de la red local). –

5

A menudo se podía hacer

make install DESTDIR=/tmp/mydest/ 

luego de archivo que directorio de destino

tar czvf /tmp/mydest.tgz -C /tmp mydest 

luego copiar ese archivo al lugar remoto

scp /tmp/mydest.tgz remote:tmp/ 

por fin, desempaquetar el archivo en el control remoto y copiarlo en el lugar apropiado

+0

En realidad, me gustaría prevenir todos estos pasos intermedios. Supongo que cmake usa un comando de copia (cp) para copiar archivos. DEBE de alguna manera ser una manera de decirle a cmake que use scp en su lugar ... – Danoo

+0

DESTDIR trabajó con cmake Makefiles. Exactamente lo que necesitaba. –

+0

A menudo, la fuente viene con un archivo llamado "README". El contenido de ese archivo puede dar una pista. Por ejemplo, pcre-8.39 sugiere usar 'make dist' y/o' make distcheck' para hacer tarballs. –

1

Usando cmake 2.8.14, comando "add_custom_command" en el CMakeLists.txt, también se pueden utilizar:

add_custom_command(TARGET my_target POST_BUILD COMMAND scp $<TARGET_FILE:my_target> [email protected]_host:dest_dir_path) 

Ventaja: solo llama cuando se reconstruye el objetivo.

Cuestiones relacionadas