使用make install
我可以将我的二进制文件,配置等复制到目标文件夹以供执行。
现在我遇到以下情况:我们将虚拟机设置为构建主机,将另一台真正的Linux机器设置为目标平台。
我希望make install
将文件直接复制到我的远程计算机上的文件夹中(通过scp
或类似名称)。我怎样才能做到这一点?
答案 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
解决问题的方法是
答案 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} 不是最好的变量,但对我来说很好