Visual Studio CMake项目:通过rsync将远程Linux库同步到本地Windows
可行方案:用CMake的
add_custom_command结合rsync实现远程库复制 完全可以通过CMake的add_custom_command配合rsync完成这个需求——rsync支持跨平台文件同步,能通过SSH协议安全访问远程Linux机器,增量复制的特性也适合频繁构建的场景。
前提准备
- Windows本地需安装rsync:可通过Git for Windows(默认包含rsync)或Cygwin安装,确保rsync可执行文件在系统PATH中,也可以在CMake命令里指定完整路径(比如
"C:/Program Files/Git/usr/bin/rsync.exe")。 - 配置SSH免密登录:将Windows本地的SSH公钥添加到远程Linux机器的
~/.ssh/authorized_keys文件中,避免构建过程中需要手动输入密码。
CMake配置示例
假设你的静态库目标名为mylib,远程Linux机器IP为192.168.1.100,远程用户为linuxuser,静态库在远程的路径是/home/linuxuser/build/libmylib.a,本地Windows的目标路径是C:/Projects/MyProject/libs/,可在CMakeLists.txt中添加以下代码:
add_custom_command(TARGET mylib POST_BUILD COMMAND rsync -avz linuxuser@192.168.1.100:/home/linuxuser/build/libmylib.a "C:/Projects/MyProject/libs/" COMMENT "Syncing static library from remote Linux to local Windows..." )
额外参数说明
- 如果远程SSH端口不是默认的22,需通过
-e参数指定端口:add_custom_command(TARGET mylib POST_BUILD COMMAND rsync -avz -e "ssh -p 2222" linuxuser@192.168.1.100:/home/linuxuser/build/libmylib.a "C:/Projects/MyProject/libs/" COMMENT "Syncing static library from remote Linux (port 2222) to local Windows..." ) - 若rsync不在系统PATH中,可直接指定完整路径:
add_custom_command(TARGET mylib POST_BUILD COMMAND "C:/Program Files/Git/usr/bin/rsync.exe" -avz linuxuser@192.168.1.100:/home/linuxuser/build/libmylib.a "C:/Projects/MyProject/libs/" COMMENT "Syncing static library from remote Linux to local Windows..." )
可选替代方案
除rsync外,也可以使用scp命令(同样基于SSH),但rsync的增量复制效率更高,更适合频繁构建的场景:
add_custom_command(TARGET mylib POST_BUILD COMMAND scp linuxuser@192.168.1.100:/home/linuxuser/build/libmylib.a "C:/Projects/MyProject/libs/" COMMENT "Copying static library from remote Linux to local Windows via SCP..." )
内容的提问来源于stack exchange,提问作者JuWe
相关产品推荐
相关产品推荐

