2012-01-23 20 views
6

Con make install Posso copiare i miei binari, configurazioni ecc. In una cartella di destinazione per l'esecuzione.cmake "make install" su macchina remota?

Ora ho la seguente situazione: abbiamo una configurazione macchina virtuale come host accumulo, e una diversa macchina reale di Linux come piattaforma di destinazione .

Mi piacerebbe avere make install copiare i file direttamente in una cartella sul mio computer remoto (tramite scp o simile). Come posso ottenerlo?

+0

Bene, facciamo eseguire 'scp'. Il prefisso –

risposta

1

make può funzionare con un prefisso specifico durante l'installazione:

make prefix=$dest/usr install 

una soluzione al vostro problema è quello di

  • montare il file system del computer di destinazione sulla vostra macchina build. Questo può essere fatto tramite NFS (persistente) oppure tramite sshfs (più facile),
  • set $ dest al punto di mount ed eseguire il comando precedente
+0

non sembra fare nulla. DESTDIR funziona (come nell'altra risposta). Tuttavia, il montaggio è la strada da percorrere per far funzionare tutto in una volta (e il server può essere remoto usando un attacco SSH per i computer della rete locale.) –

5

Spesso poteva fare

make install DESTDIR=/tmp/mydest/ 

allora archivio directory di destinazione

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

quindi copiare l'archivio per il posto a distanza

scp /tmp/mydest.tgz remote:tmp/ 

finalmente, estrarre l'archivio in remoto e copiarlo in adeguato luogo

+0

In realtà vorrei prevenire tutti questi passaggi intermedi. Immagino che cmake usi un comando copy (cp) per copiare i file. Deve esserci in qualche modo un modo per dire cmake di usare scp invece ... – Danoo

+0

DESTDIR ha lavorato con makefile cmake. Esattamente quello di cui avevo bisogno. –

+0

Spesso l'origine viene fornita con un file denominato "README". Il contenuto di quel file potrebbe dare un indizio. Per esempio pcre-8.39 suggerisce di usare 'make dist' e/o' make distcheck' per fare tarball. –

1

Utilizzando CMake 2.8.14, comando "add_custom_command" nel CMakeLists.txt, può anche essere utilizzato:

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

Vantaggio: chiamare solo quando il target viene ricostruito.

Problemi correlati