Eclipse C/C++ 项目 Bash Ubuntu Windows

Eclipse C/C++ project on Bash on Ubuntu on Windows

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

我正在尝试使用 Eclipse 创建一个新的 C 项目,但在编译器选择阶段它没有给我使用 "Bash on Ubuntu on Windows" 编译器的选项。

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

因为 Bash/WSL 非常新,而且许多开发工具都不太了解从外部 Bash(使用 bash.exe -c ...)正确调用 Linux 命令的能力( yet),您可能需要做一些工作来定义自定义 tasks/actions 以调用您要调用的必要 bash.exe -c "gcc ..." 命令。

但是,您绝对应该能够 write/configure 可以将路径切换到 lib/include/tools/etc 的 makefile(或者,也许更好的是 CMake 文件)。基于环境,然后在 Windows 或 Linux.

中顺利构建

正是这种情况激发了我创建一个很酷的博客 post 的想法,我将在接下来的一两周内着手并发布到 our blog https://blogs.msdn.microsoft.com/commandline :)

HTH.

我们使用 Eclipse 和一个 makefile 项目。我通过添加 "external builder" 来配置 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 子系统 Linux “/mnt/c/”并将“\”替换为“/

Make 现在在 ${project_loc}

定义的项目位置执行

我还没有想出如何在 Linux 上执行 gdb。但至少 compile+link(并执行我的 makefile 中定义的单元测试)现在正在利用本机 Ubuntu 工具链的全速...

我认为在 C/C++ 中使用 wsl 进行编程的最佳方式就像 Microsoft 所做的那样。 Visual Studio 使用 ssh 连接到 "C++ for Linux Development" 的 linux 环境。 因此,在我们的例子中,我们可以在 wsl 上设置 openssh 服务器,从您的 IDE 连接到本地主机并启动远程项目。

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 correctly" - 我通过禁用项目属性的 "Builders" 子菜单中的 "Scanner Configuration Builder" 来修复它(它是一个 C生成文件项目)。此外,需要从默认构建命令中删除目标 "all" 和 "clean"。

我有更好的方法... 您可以添加新的用户终端并在本地终端设置下的 Eclipse 中提供 "Ubuntu.exe" 位置,如屏幕截图所示。

在我的例子中目录是...

  • C:\Users\MyuserName\AppData\Local\Microsoft\WindowsApps\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc

如果eclipse不能selectubuntu16.4.exe,那么在路径中手动写入。 如图所示。

现在只需单击应用并关闭。打开终端 (Ctrl+Alt+Shift+T) 和 select Ubuntu 终端。

现在,通过终端导航到源目录并编译你的项目。享受...

又一个变体。我设法将外部构建器命令设置为

bash.exe -c "cd '${project_loc}' && cd directory_where_the_Makefile_is && make -j8"