VS remote building: "Makefile.Targets error: Cannot copy file remotely to directory"
VS remote building: "Makefile.Targets error: Cannot copy file remotely to directory"
我正在 Visual Studio 上开发一个 Makefile 项目,从我的笔记本电脑修改代码并在我通过 ssh 连接的 Linux 服务器上远程构建。
我这样配置我的项目 属性 页面:
一般:https://i.stack.imgur.com/3WdP6.png
正在调试:https://i.stack.imgur.com/zI5ua.png
远程构建 > 构建命令行: cd $(RemoteProjectDir) && echo 密码 |sudo -S make
在远程项目目录中,我已经有了项目的每个文件,还有Makefile。按 Compile 时,我希望 VS 将更改后的代码逐个文件地从本地目录复制到远程目录,但我得到的唯一错误是:
Linux.Makefile.Target(108,5): error : Cannot copy \foo\bar\file.cpp remotely to /home/user/projects/MyProject/file.cpp
在带有目标扩展名的文件的第 108 行有这个标记:
<CopySources
Sources ="@(FinalSourcesToCopyRemotely)"
AdditionalSources="@(AdditionalSourcesToCopyRemotely)"
ProjectDir="$(ProjectDir)"
RemoteProjectDir="$(RemoteProjectDir)"
RemoteTarget="$(ResolvedRemoteTarget)"
IntermediateDir="$(IntDir)"
RemoteProjectDirFile="$(RemoteProjectDirFile)"
UpToDateFile="$(CopySourcesUpToDateFile)"
LocalRemoteCopySources="$(LocalRemoteCopySources)">
<Output TaskParameter="ResolvedRemoteProjectDir" PropertyName="_ResolvedRemoteProjectDir" />
</CopySources>
这个文件会不会是问题的原因?修改 .targets 文件好吗?
我之前已经使用相同的配置和类似的 Makefile(适用于路径和文件名)远程构建了另一个项目,并且它工作得很好。
[编辑]:我添加了命令 echo password| sudo -S make 与 sudo 提示的密码请求进行交互,这在另一个项目中有效,但我仍然收到错误
你can't use sudo
when debugging。所以我猜你在构建时也不能使用 sudo
。问题是 sudo
提示输入密码,而 VSLinux 无法处理。一种选择是配置 sudo
,这样它就不会请求密码,但不建议这样做。您能否更改您的设置,使其不需要 sudo
?
长话短说:如果出现此错误,只需创建另一个与第一个 属性 完全相同的项目即可。
问题可能是因为我在使用正确的文件之前更改了几次 属性,这可能会创建一些配置(-ish)文件,修改后未更改。
我正在 Visual Studio 上开发一个 Makefile 项目,从我的笔记本电脑修改代码并在我通过 ssh 连接的 Linux 服务器上远程构建。
我这样配置我的项目 属性 页面:
一般:https://i.stack.imgur.com/3WdP6.png
正在调试:https://i.stack.imgur.com/zI5ua.png
远程构建 > 构建命令行: cd $(RemoteProjectDir) && echo 密码 |sudo -S make
在远程项目目录中,我已经有了项目的每个文件,还有Makefile。按 Compile 时,我希望 VS 将更改后的代码逐个文件地从本地目录复制到远程目录,但我得到的唯一错误是:
Linux.Makefile.Target(108,5): error : Cannot copy \foo\bar\file.cpp remotely to /home/user/projects/MyProject/file.cpp
在带有目标扩展名的文件的第 108 行有这个标记:
<CopySources
Sources ="@(FinalSourcesToCopyRemotely)"
AdditionalSources="@(AdditionalSourcesToCopyRemotely)"
ProjectDir="$(ProjectDir)"
RemoteProjectDir="$(RemoteProjectDir)"
RemoteTarget="$(ResolvedRemoteTarget)"
IntermediateDir="$(IntDir)"
RemoteProjectDirFile="$(RemoteProjectDirFile)"
UpToDateFile="$(CopySourcesUpToDateFile)"
LocalRemoteCopySources="$(LocalRemoteCopySources)">
<Output TaskParameter="ResolvedRemoteProjectDir" PropertyName="_ResolvedRemoteProjectDir" />
</CopySources>
这个文件会不会是问题的原因?修改 .targets 文件好吗? 我之前已经使用相同的配置和类似的 Makefile(适用于路径和文件名)远程构建了另一个项目,并且它工作得很好。
[编辑]:我添加了命令 echo password| sudo -S make 与 sudo 提示的密码请求进行交互,这在另一个项目中有效,但我仍然收到错误
你can't use sudo
when debugging。所以我猜你在构建时也不能使用 sudo
。问题是 sudo
提示输入密码,而 VSLinux 无法处理。一种选择是配置 sudo
,这样它就不会请求密码,但不建议这样做。您能否更改您的设置,使其不需要 sudo
?
长话短说:如果出现此错误,只需创建另一个与第一个 属性 完全相同的项目即可。
问题可能是因为我在使用正确的文件之前更改了几次 属性,这可能会创建一些配置(-ish)文件,修改后未更改。