1

我正在尝试使用 NetBeans (7.3.1) 处理远程项目。

我的配置如下:

  • 我的本地机器是一台 Windows 7 笔记本电脑。它没有任何工具。特别是既不是编译器也不是调试器。但它确实具有例如 NetBeans IDE 和 PuTTY。
  • 源代码、Make 脚本和(最终)构建结果位于跨服务器和“本地”共享的远程存储上。(我可能会切换到单服务器存储,因为它更快,但我认为这根本不重要。)
  • 我正在使用SSHFS Manager访问它。SSHFS Manager 获取服务器名称、服务器上的路径、用户名和 SSH 私钥。结果,它将该目录作为 Windows 上的磁盘安装在服务器上。这工作正常。(虽然某些目录,可能是链接,在 Windows 资源管理器中表示为文件,但我不知道这是否重要......)
  • NetBeans 项目位于本地计算机上,但我认为这并不重要,我也可以远程放置它。但我更愿意让它“脱离源代码”,这样我就不必在版本控制中添加任何忽略。
  • 在 NetBeans 中,我执行了远程开发教程中描述的过程。这似乎是成功的。NetBeans 连接到服务器并找到 GNU Compiler Collection。
  • 然后我使用 File | 添加了项目。新项目...,有 C/C++ | 具有现有源的 C/C++ 项目。这似乎是成功的。所有文件和所有员工都是可见的。

然而,问题是我们的工作“程序”要求我们首先设置环境。因此,例如,当我使用 PuTTY 登录时,我必须首先setsee使用正确的参数进行调用。这会通过添加许多变量来严重影响环境,例如:

  • GCC_HOME设置为/opt/gcc/linux64/ix86/gcc_4.3.2-7p3/user/bin/g++这与 NetBeans 在其 GNU Compiler Collection for C++ Compiler 和
  • CPLUS_INCLUDE_PATH它指向某个路径(而 NetBeans 没有看到很多包含,可能缺少该路径)。

那么有没有办法告诉 NetBeanssetsee在执行其他任何操作之前调用远程服务器?

4

1 回答 1

1

事实证明,这setsee或多或少是一种内部工具。然而,“核心问题”仍然存在:在 IDE 实际使用该脚本之前,如何代表 IDE 创建的 SSH 会话执行任意脚本。

回答“<a href="https://superuser.com/questions/207200/how-can-i-set-environment-variables-for-a-remote-rsync-process">如何设置环境变量对于远程 rsync 进程?”</a> 超级用户的问题说明了一切。

简单总结一下:在 ~/.ssh/authorized_keys 中,必须修改与 IDE 将登录的密钥相对应的条目。必须添加一个command参数,该参数是要在登录后但在“之前执行的脚本”交还控制权”。

还有与该解决方案相关的另一件事。如果要在选项中执行的脚本command输出任何内容,它将破坏许多工具(也可能是 IDE)。无论被调用的工具做什么,此类工具通常都期望输出。解析这样的输出失败然后是command脚本输出的内容。

一个简单的解决方案是使用tail. 但这样做的缺点是你失去了“进步”。冗长的操作看起来就像挂起,然后一口气输出所有内容。此外,在某些情况下,它根本不起作用(例如,如果脚本输出任何内容git clone --progress,在 Tortoise Git 上通过 SSH 进行操作将失败)。command

于 2013-09-10T22:27:58.073 回答