cmake“make install”到远程机器?

时间:2012-01-23 11:18:25

标签: linux install cmake

使用make install我可以将我的二进制文件,配置等复制到目标文件夹以供执行。

现在我遇到以下情况:我们将虚拟机设置为构建主机,将另一台真正的Linux机器设置为目标平台

我希望make install将文件直接复制到我的远程计算机上的文件夹中(通过scp或类似名称)。我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:6)

你经常可以做到

 make install DESTDIR=/tmp/mydest/

然后归档目标目录

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

然后将该存档复制到远程位置

 scp /tmp/mydest.tgz remote:tmp/

最后,解压缩遥控器上的档案并将其复制到适当的地方

答案 1 :(得分:2)

make可以在安装期间使用特定前缀进行操作:

  make prefix=$dest/usr install

解决问题的方法是

  • 在您的构建计算机上安装目标计算机的文件系统。这可以通过nfs(持久性)或通过sshfs(更简单),
  • 来完成
  • 将$ dest设置为mountpoint并运行上面的命令

答案 2 :(得分:2)

使用cmake 2.8.14,命令“add_custom_command”进入CMakeLists.txt,也可以使用:

add_custom_command(TARGET my_target POST_BUILD COMMAND scp $<TARGET_FILE:my_target> user@remote_host:dest_dir_path )

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

答案 3 :(得分:0)

通过user在计算机remote上的用户配置文件和预先配置的ssh密钥:

  install(CODE "execute_process(COMMAND /usr/bin/rsync -avh ${INSTALL_DIR} user@remote:/home/user/)")

仅当调用make install时,才复制本地安装的二进制文件。

答案 4 :(得分:0)

我正在使用此解决方案:

install (CODE "execute_process(COMMAND scp -r -i /home/user/.ssh/id_rsa ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/. user@remote:/path/to/copy/)")

然后我运行命令make install并且有效

我知道 $ {CMAKE_RUNTIME_OUTPUT_DIRECTORY} 不是最好的变量,但对我来说很好