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

QtCreator自定义部署步骤中使用scp的配置问题

解决Qt Creator自定义处理步骤中scp部署的问题

我来帮你搞定这两个问题,分两部分说清楚:

一、正确设置项目源码路径为工作目录

你之前把工作目录设成%{buildDir}确实不对,Qt Creator有专门的变量用来获取项目源码的根目录:
直接在自定义处理步骤的「工作目录」输入框里填:%{sourceDir}
这个变量会自动替换成你的项目源码所在的真实路径,这样scp -r .就能准确复制整个项目目录了。

二、修复setsid启动失败的错误

终端里setsid scp能正常弹出图形化密码提示,但Qt Creator的进程环境和普通终端会话不一样,setsid没法在Qt Creator的非交互式环境里正确唤起图形化密码窗口,所以才会启动失败。这里有几个靠谱的解决方案:

方案1:改用ssh-askpass直接触发图形化密码(推荐)

把命令拆成「命令」和「参数」分开配置,确保密码弹窗能正常显示:

  • 命令栏填:ssh-askpass
  • 参数栏填:scp -r . <user>@<host>:<path>
  • 工作目录保持为%{sourceDir}
    这样ssh-askpass会直接调用系统的图形化密码输入窗口,不需要依赖setsid的会话环境,Qt Creator能正常执行这个命令。

方案2:配置SSH免密登录(更省心)

如果不想每次部署都输密码,最彻底的方式是设置SSH密钥对实现免密登录:

  1. 在本地终端执行ssh-keygen生成密钥对(一路按回车用默认配置就行)
  2. 把本地公钥复制到目标机器:ssh-copy-id <user>@<host>
  3. 之后在Qt Creator的自定义处理步骤里直接这么配:
    • 命令栏:scp
    • 参数栏:-r . <user>@<host>:<path>
    • 工作目录:%{sourceDir}
      这样部署的时候完全不需要密码,流程更顺畅,还彻底避免了图形化弹窗的兼容性问题。

方案3:调整setsid的执行方式(兼容旧环境)

如果你一定要用setsid,得确保Qt Creator能找到它的完整路径,并且配置好图形化环境变量:

  1. 先在终端执行which setsid拿到完整路径,比如/usr/bin/setsid
  2. 在Qt Creator的命令栏填完整路径:/usr/bin/setsid scp -r . <user>@<host>:<path>
  3. 还要在Qt Creator的「项目」->「运行环境」里添加DISPLAY=:0这个环境变量(图形化程序需要这个来识别显示会话)
    不过这个方案不如前两个稳定,毕竟Qt Creator的非交互式环境对图形化程序的支持有限。

验证方法

配置完之后,点击Qt Creator里的构建按钮,查看自定义处理步骤的输出日志,如果没有报错,并且目标机器上能看到完整复制过去的项目目录,就说明配置成功了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:37:07