2012-01-23 48 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) 

优点:只在目标重建时调用。