为什么make.exe尝试在Windows上运行/ usr / bin / sh?

问题描述 投票:3回答:2

我最近从Window 7迁移到Windows 10,我无法让我的makefile工作了。

我一直在使用GNU Make for Windows

我注意到的第一件事是它已经开始将Windows文件夹分隔符(反斜杠字符'\')视为行继续符,因此我修改了'clean'部分,如下所示,使用正斜杠'/'字符代替:

clean:
    del $(ObjDir)/*.o

当我调用make -ftest.mak clean时,我收到以下错误,表明它现在正在尝试在MinGw / Cygwin环境中运行:

c:\Test\Source>make -ftest.mak clean
del obj/*.o
/usr/bin/sh: del: command not found
make: *** [clean] Error 127

我的PC上有MinGw文件夹(我已经重命名为停止查找)我在Cmd.exe环境或PATH中看不到任何'MingGw'相关的环境变量

我怎样才能让make工作,所以它不会尝试在Windows下执行sh

是否有某些配置参数使其调用sh而不是cmd.exe

更新:刚试过运行make -d来记录调试输出。它看起来好像是使用我的Git文件夹作为某种根文件夹:

Must remake target `clean'.
del obj/*.o
CreateProcess(NULL,C:/Program Files/Git/usr/bin/sh.exe -c "del obj/*.o",...)
Putting child 0x006e7fc0 (clean) PID 7234712 on the chain.
windows-10 mingw gnu-make
2个回答
3
投票

最干净的方法是在命令行上指定SHELL

make -ftest.mak clean SHELL=cmd

会做的。 ndk-build会为你做这件事,看你的ndk-build.cmd。不要尝试在Windows上运行ndk-build bash脚本。当您在Windows上以bash运行时,NDK中的脚本可能会变为amoc。


3
投票

令人讨厌的结论是这个问题。

make通过PATH环境变量查看包含usr/bin的任何内容。事实上,由于我也在我的Windows 10 PC上安装了Git,Git将以下文件夹添加到PATH

C:\Program Files\Git\usr\bin

使用子字符串“usr \ bin”添加任何路径将导致make尝试在Windows上运行sh而不是cmd.exe

我的解决方案:从我的C:\Program Files\Git\usr\bin中删除PATH

更新:我将名称从usr\bin更改为user\binmake仍然在该文件夹中找到sh.exe。最后,我在sh.exe文件夹中将_sh.exe重命名为Git\usr\bin

© www.soinside.com 2019 - 2024. All rights reserved.