2012-01-23 83 views
6

With make install我可以將我的二進制文件,配置等複製到目標文件夾執行。cmake「make install」到遠程機器?

現在我有以下的情況:我們有一個虛擬機設置爲構建主機,和不同的真正的Linux機器作爲目標平臺

我想make install將文件直接複製到我的遠程機器上的文件夾中(通過scp或類似的方式)。我怎樣才能做到這一點?

+0

那麼,讓執行'scp'。 – 2012-01-23 11:20:44

回答

1

make可以在安裝過程中使用特定的前綴操作:

make prefix=$dest/usr install 

一個解決問題的方法是

  • 安裝在目標機器的文件系統的構建機器上。這可以通過NFS(永久)或通過sshfs的(容易)來完成,
  • 集$ DEST到安裝點並運行上述
+0

前綴似乎沒有做任何事情。 DESTDIR的工作原理(與其他答案一樣)。然而,安裝是一次性完成所有工作的方式(並且服務器可以遠程使用本地網絡計算機的SSH掛載)。 –

5

你的命令往往可以做

make install DESTDIR=/tmp/mydest/ 

然後歸檔文件目標目錄

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

然後複製存檔到遠程地點

scp /tmp/mydest.tgz remote:tmp/ 

最後,解壓縮在遠程歸檔,並在適當的地方

+0

其實我想防止所有這些中間步驟。我猜cmake使用複製(cp)命令來複制文件。必須以某種方式告訴cmake使用scp來代替...... – Danoo

+0

DESTDIR與cmake Makefiles一起工作。正是我需要的。 –

+0

通常,源代碼會附帶一個名爲「README」的文件。該文件的內容可能會提供一些線索。例如pcre-8.39建議使用'make dist'和/或'make distcheck'來製作tarball。 –

1

複製使用cmake 2.8.14,命令「add_custom_command」到的CMakeLists.txt,也可用於:

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

優點:只在目標重建時調用。