You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio CMake:远程Linux可执行文件复制到本地的配置方案

解决方案:用CMake自定义命令或CMakePresets构建后步骤实现远程文件复制

CMakeSettings.json被弃用后,CMakePresets.json没有直接对应的remoteCopyBuildOutput配置,但可以通过以下两种方式实现编译后将远程可执行文件复制回本地:

方法一:在CMakeLists.txt中添加构建后自定义命令

直接在CMake配置里添加POST_BUILD命令,调用scp或rsync完成文件复制。假设你的目标可执行文件名为myapp,远程主机地址为remote-host,远程构建目录为/home/your-user/build,本地存放路径为C:/local-build-output,可以这样写:

add_executable(myapp main.cpp)

# 构建完成后复制文件到本地
add_custom_command(TARGET myapp POST_BUILD
    COMMAND scp your-user@remote-host:/home/your-user/build/myapp C:/local-build-output
    COMMENT "正在将远程可执行文件复制到本地..."
)

注意:

  • 本地需要安装scp客户端(Windows可通过OpenSSH功能或Git Bash获取)
  • 建议配置SSH免密登录,避免每次复制都输入密码
  • 远程构建路径可以用CMake变量动态获取,比如${CMAKE_BINARY_DIR}/myapp,前提是明确远程机器上的CMake构建目录路径

方法二:在CMakePresets.json中添加构建后命令

在你的构建预设中加入postBuildCommand,指定本地执行的复制命令。示例配置:

{
  "version": 3,
  "configurePresets": [
    {
      "name": "remote-linux-config",
      "generator": "Ninja",
      "toolchainFile": "/path/to/toolchain.cmake",
      "remoteMachineName": "remote-host",
      // 其他远程配置...
    }
  ],
  "buildPresets": [
    {
      "name": "remote-linux-build",
      "configurePreset": "remote-linux-config",
      "postBuildCommand": "rsync -avz your-user@remote-host:/home/your-user/build/myapp C:/local-build-output"
    }
  ]
}

这个方法的优势是把复制逻辑集中在预设文件里,不需要修改CMakeLists.txt。同样需要确保本地有rsync或scp工具,且SSH连接正常。

额外提示

如果需要复制多个文件,可以用通配符(比如*.bin),或者编写一个简单的脚本(bash或bat),然后在postBuildCommand里调用这个脚本,逻辑更清晰也方便维护。

内容的提问来源于stack exchange,提问作者FalsinSoft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:45:23