我最近开始使用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的开发环境。
这是你必须要做的:
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权限允许执行。
否则它将尝试在你的linux用户的$ PATH中执行build.sh
作为命令。
这就是我在Build Command Line设置中的内容。它工作正常。
start /WAIT %windir%\sysnative\bash.exe -c "cd /mnt/d/Projects/IoT/ESP8266/;./gen.sh -m DEBUG; read -n 1; exit;"