5

我最近开始使用适用于 Linux 的 Windows 子系统 (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 可执行文件,并且尝试将其添加为“外部工具”似乎不起作用,因为可执行文件没有出现在尽管能够在同一目录中看到其他可执行文件,但选择窗口。

一些题外话:如果微软可以让 Visual Studio 和 WSL 无缝协作,那么我可能会从我的 Ubuntu 虚拟机设置切换到基于 WSL 的开发环境。

4

2 回答 2

1

以下是您必须执行的操作:

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

您必须从 32 位应用程序启动它的方式是:

%windir%\sysnative\bash.exe

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

%windir%\sysnative\bash.exe -c "sh build.sh"

或者可能

%windir%\sysnative\bash.exe -c "./build.sh"

如果 DriveFS 权限允许执行。

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

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

于 2016-08-30T09:35:59.167 回答
0

这就是我在构建命令行设置中的内容。它工作正常。

start /WAIT %windir%\sysnative\bash.exe -c "cd /mnt/d/Projects/IoT/ESP8266/;./gen.sh -m DEBUG; read -n 1; exit;"
于 2018-08-08T19:39:59.077 回答