在Windows上的Ubuntu上的Bash上的Eclipse C / C ++项目

我已经安装了Eclipse Neon(v4.6)。 另外,我有“在Windows上使用Ubuntu进行Bash”(2016年9月)。 我安装了gcc和gdb用于在C中进行编译和调试。我在终端上测试了它们并且它们正在运行。

我正在尝试使用Eclipse来创建一个新的C项目,但是在编译器选择阶段,它并没有让我选择使用“Windows上的Bash on Ubuntu”编译器。

有什么方法可以解决我的问题吗?

我们使用Eclipse和makefile项目。 我通过添加“外部构建器”来配置Eclipse – 并使用以下脚本:

-c "cd `echo '${project_loc}' | sed -e 's/C:/\/mnt\/c/g' -e 's/\\\\/\//g'` && make -f path_to_makefile/makefile 

cd ”和sed技巧是从Eclipse“C:\”转换为Windows子系统for Linux“ /mnt/c/ ”并将“ \ ”替换为“ /

Make现在在${project_loc}定义的项目位置执行

我还没弄明白如何在Linux上执行gdb。 但至少编译+链接(并执行我的makefile中定义的unit testing)现在正在利用原生Ubuntu工具链的全速…

因为Bash / WSL非常新,并且能够从外部Bash(使用bash.exe -c ... )正确调用Linux命令的能力尚未得到很多开发工具的理解(但是),您可能需要做一些工作来定义用于调用要调用的必需bash.exe -c "gcc ..."命令的自定义任务/操作。

但是,你绝对应该能够编写/配置一个makefile(或者甚至更好的CMake文件),它可以将路径切换到lib / include / tools / etc. 基于环境,然后在Windows或Linux上顺利构建。

这个场景引发了一个很酷的博客文章的想法,我将在下一周或两周内工作并发布到我们的博客 https://blogs.msdn.microsoft.com/commandline 🙂

HTH。

我认为在C / C ++中使用wsl进行编程的最佳方法就像微软那样。 Visual Studio使用ssh连接到Linux环境以获得“C ++ for Linux Development”。 因此,在我们的例子中,我们可以在wsl上设置openssh服务器,从IDE连接到localhost并启动远程项目。

  • Eclipse和NetBeans支持远程项目。
  • Clions我认为不是。
  • 以下是Microsoft关于如何配置Visual Studio和wsl的说明: https ://blogs.msdn.microsoft.com/vcblog/2017/02/08/targeting-windows-subsystem-for-linux-from-visual-studio/

2017年5月

最初我遵循espenalb的建议,但它没有正确解析我的构建输出:双击行没有打开文件,也没有转到错误行。

我最终更改了内置的CDT构建器(而不是添加外部构建器)。 我将构建命令更改为以下(alex是我的用户名):

 bash.exe -c make 2>&1 | sed -e 's/\\/home\\/alex/C:\\\\Users\\\\alex/g' -e 's/\\//\\\\/g' 

这样,make输出从带有“/ home / alex”的路径转换为“c:\ users \ alex”下的相同路径。 这解决了解析问题。

我也有一个问题,eclipse用“Build not configured correct”替换构建输出 – 我通过在项目属性的“Builders”子菜单中禁用“Scanner Configuration Builder”来修复它(它是一个C Makefile项目)。 此外,需要从默认构建命令中删除目标“all”和“clean”。