从Visual Studio 2015开始基于WSL bash的构建

Jon*_*Jon 5 msbuild bash visual-studio windows-subsystem-for-linux

我最近开始使用Windows子系统Linux(WSL)来查看我的Linux Makefile和基于arm-none-eabi-gcc的微控制器项目是否会在Windows中"本地"构建.令我惊讶的是,工具链和基于Linux的开发工具首先安装并完美运行,无需对Makefile进行任何修改.

这让我想到尝试使用IDE功能在Visual Studio中进行所有代码编辑,同时在WSL中提供的Linux和bash环境中进行实际构建.

不幸的是,在我的Visual Studio项目的NMake选项中指定"构建命令行"时,放入"C:\Windows\System32\bash.exe build.sh"不起作用,因为:

'C:\Windows\System32\bash.exe' is not recognized as an internal or external command, operable program or batch file.

这对我来说很奇怪,因为我指定了完整路径并且找不到WSL bash可执行文件,并且还尝试将其添加为"外部工具"似乎不起作用,因为可执行文件未显示在选择窗口,尽管能够在同一目录中看到其他可执行文件.

一些非主题观点:如果Microsoft可以使Visual Studio和WSL无缝协同工作,那么我可能会从我的Ubuntu虚拟机设置切换到基于WSL的开发环境.

小智 1

您必须这样做:

Nmake不是 64 位应用程序,因此当它尝试使用 Windows 实用程序和 system32 时,WoW64 会诱骗它在不同的位置进行查找。

从 32 位应用程序启动它的方法是:

%windir%\sysnative\bash.exe
Run Code Online (Sandbox Code Playgroud)

但是,您的命令也是格式错误的。你需要这样做:

%windir%\sysnative\bash.exe -c "sh build.sh"
Run Code Online (Sandbox Code Playgroud)

或者可能

%windir%\sysnative\bash.exe -c "./build.sh"
Run Code Online (Sandbox Code Playgroud)

如果 DriveFS 权限允许执行。

否则它将尝试build.sh在您的 linux 用户的 $PATH 中作为命令执行。

来源: https: //github.com/Microsoft/BashOnWindows/issues/870