我有以下方框:
构建和运行我的项目所需的编译器和硬件都只在机器B上。
我希望使用Eclipse CDT从该项目的Windows框中“透明地”工作,并能够在IDE中远程构建,运行和调试项目。
如何设置:
rsync
项目,然后调用远程makefile来启动实际构建? Eclipse托管构建是否具有该功能?答案 0 :(得分:205)
尝试Remote System Explorer(RSE)。这是一组完全符合您要求的插件。
RSE可能已包含在您当前的Eclipse安装中。要签入Eclipse Indigo,请转到窗口> 开放视角> 其他... 并从 Open Perspective 对话框中选择远程系统资源管理器以打开RSE透视图。
从Eclipse中的RSE透视图创建SSH远程项目:
如果操作正确,现在应该可以从Project Explorer和eclipse中的其他视角访问新的远程项目。通过正确的SSH连接设置,密码可以成为正常SSH身份验证过程的可选部分。现在创建了一个使用Eclipse通过SSH的远程项目。
答案 1 :(得分:11)
最简单的方法是在Linux Box上运行Eclipse CDT并使用X11-Forwarding或远程桌面软件(如VNC)。
当然,只有当Linux上的Eclipse出现在盒子上并且你的网络连接足够快时才能实现这一点。
优势在于,由于所有内容都是本地的,因此您不会遇到同步问题,也不会遇到任何棘手的跨平台问题。
如果盒子上没有eclipse,你可以考虑通过SMB(或SSHFS)共享你的linux工作目录,并从你的windows机器访问它,但这需要相当多的设置。
两者都比拥有两份副本更好,特别是当它是跨平台时。
答案 2 :(得分:6)
我自己(或曾经)在同一个地方,我最后检查了Linux主机上的samba共享,并在Windows机器上使用notepad ++在本地编辑该共享,然后我在Linux机器上编译油灰。 (我们不允许更新Linux主机上的10个版本的编辑器,它没有Java,所以我放弃了X11转发)
现在......我在Windows主机上的VM中运行现代Linux,将我想要的所有工具(例如CDT)添加到VM,然后我签出并构建一个非常类似于RTE的chroot监狱。
这是一个笨重的解决方案,但我想我会把它扔进去。
答案 3 :(得分:3)
除了使用sshfs之外,我的解决方案类似于SAMBA。使用sshfs挂载我的远程服务器,在远程计算机上打开我的makefile项目。从那里开始。
似乎我也可以通过这种方式运行GUI前端。
构建我的远程代码非常简单:ssh address remote_make_command
我正在寻找一种不错的调试方法。可能通过gdbserver?
答案 4 :(得分:2)
2年前我遇到了同样的问题,我通过以下方式解决了这个问题:
1)我使用makefile构建我的项目,而不是由eclipse管理 2)我使用SAMBA连接来编辑Eclipse中的文件 3)建设项目: Eclipse使用makefile调用“本地”make,打开SSH连接 到Linux主机。在SSH命令行上,您可以提供参数 在Linux主机上执行。我为该参数使用makeit.sh shell脚本 在linux主机上调用“真正的”make。 构建你的不同目标也可以通过参数给出 本地makefile - > makeit.sh - > linux主机上的makefile。
答案 5 :(得分:1)
我试过ssh -X
,但速度太慢了。我也尝试过RSE,但它甚至不支持使用Makefile构建项目。
我读到NX比X11转发更快,但我无法让它工作。
最后,我发现我的服务器支持X2Go(如果您没有,则链接有安装说明)。现在我只需要:
sudo apt-get install x2goclient
),一切就像我在本地机器上工作一样,包括构建,调试和代码索引。而且没有明显的滞后。
答案 6 :(得分:1)
我解决这个问题的方法是:
对于窗户:
对于 Linux:
在这两种情况下,您都可以通过 Eclipse 构建和运行,或者通过 ssh 在远程机器上构建。
答案 7 :(得分:0)
对于这种情况,您可以使用ptp eclipse https://eclipse.org/ptp/进行源浏览和构建。
您可以使用此插件调试应用程序
http://marketplace.eclipse.org/content/direct-remote-c-debugging
答案 8 :(得分:0)
此答案当前仅适用于使用两台Linux计算机(或者也许也可以在Mac上使用?–在Mac上尚未使用)(从另一台同步到另一台),因为我用bash编写了此同步脚本。它只是git
周围的包装器,因此,可以随意使用它并将其转换为跨平台的Python解决方案,或者根据需要将其转换为
这并不能直接回答OP的问题,但是它是如此接近,我保证它将回答其他人落在此页面上的问题(实际上,是我的第一个来这里的人, 编写自己的解决方案),因此无论如何我都将其发布在这里。
我们将第一台我写代码“ PC1”的计算机(个人计算机1)和第二台我写代码“ PC2”的计算机联系起来。我需要一个工具来轻松地从PC1同步到PC2。我尝试了rsync
,但是对于大型存储库,它的运行速度非常慢,并且占用了大量的带宽和数据。
那么,我该怎么做?我应该使用什么工作流程?如果您也有这个问题,这是我决定的工作流程。我编写了一个bash脚本,通过使用git
通过远程存储库(例如github)将更改从PC1自动推送到PC2来自动执行该过程。到目前为止,它运行良好,我对此感到非常满意。 它远比rsync
快得多,在我看来更值得信赖,因为每台PC都维护一个功能齐全的git repo,并且使用更少的带宽来进行整个同步,因此可以很容易地在手机上完成无需使用大量数据即可发现。
在PC1上安装脚本(此解决方案假定〜/ bin在$ PATH中):
git clone https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles.git
cd eRCaGuy_dotfiles/useful_scripts
mkdir -p ~/bin
ln -s "${PWD}/sync_git_repo_from_pc1_to_pc2.sh" ~/bin/sync_git_repo_from_pc1_to_pc2
cd ..
cp -i .sync_git_repo ~/.sync_git_repo
现在编辑上面刚刚复制的“〜/ .sync_git_repo”文件,并更新其参数以适合您的情况。这是它包含的参数:
# The git repo root directory on PC2 where you are syncing your files TO; this dir must *already exist*
# and you must have *already `git clone`d* a copy of your git repo into it!
# - Do NOT use variables such as `$HOME`. Be explicit instead. This is because the variable expansion will
# happen on the local machine when what we need is the variable expansion from the remote machine. Being
# explicit instead just avoids this problem.
PC2_GIT_REPO_TARGET_DIR="/home/gabriel/dev/eRCaGuy_dotfiles" # explicitly type this out; don't use variables
PC2_SSH_USERNAME="my_username" # explicitly type this out; don't use variables
PC2_SSH_HOST="my_hostname" # explicitly type this out; don't use variables
Git克隆要在PC1和PC2上同步的仓库。
现在cd
进入PC1上git repo内的任何目录,并运行:
sync_git_repo_from_pc1_to_pc2
就是这样!大约30秒后,所有内容将从PC1神奇地同步到PC2,并且将一直打印输出,以告诉您它在磁盘上以及在哪台计算机上正在做什么,正在做什么。这也是安全的,因为它不会覆盖或删除任何未提交的内容。而是先备份它!请在下面阅读更多有关其工作原理的信息。
rsync
将脚本的副本复制到PC2上,并进行ssh
调用以告诉PC2运行带有特殊选项的脚本来只执行PC2的工作。cd
插入存储库,并检查是否存在任何未提交的 local 更改。如果是这样,它将创建一个从当前分支派生的新备份分支(示例名称:my_branch_SYNC_BAK_20200220-0028hrs-15sec
<-请注意,这是YYYYMMDD-HHMMhrs--SSsec),并使用提交消息将对该分支的所有未提交的更改提交,例如作为在PC2(目标PC /内置计算机)上备份所有未提交的更改。现在,它签出SYNC分支,如果它不在本地计算机上,则将其从远程存储库中拉出。然后,它获取远程存储库上的最新更改,并进行硬重置以强制本地SYNC存储库与远程SYNC存储库匹配。您可能将其称为“硬拉”。这是安全的,因为我们已经备份了PC2上本地所做的所有未提交的更改,因此不会丢失任何信息!