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



我最近从窗口7移到了Windows 10,我无法让Makefiles工作了。

我一直在为Windows使用GNU制作

我注意到的第一件事是它已经开始将Windows文件夹分隔线(BackSlash字符'')视为行连续字符,因此我修改了以下"清洁"部分,以使用前向斜杠/'字符而改用:

clean:
    del $(ObjDir)/*.o

当我致电make -ftest.mak clean时,我会收到以下错误,这表明它正在尝试在mingw/cygwin环境中运行:

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

我的PC上确实有mingw文件夹(我重命名为停止寻找它),而且我在我的cmd.exe环境或路径

中看不到任何" minggw"相关环境变量

如何使make工作,以免在Windows下尝试执行sh

某处是否有一些配置参数,使其称为sh,而不是cmd.exe

更新:刚刚尝试运行make -d dog debug输出。看起来好像正在使用我的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.

最清洁的方法是在命令行上指定SHELL

make -ftest.mak clean SHELL=cmd

将完成这项工作。 NDK-Build 将为您做到这一点,请参阅您的ndk-build.cmd。不要尝试在Windows上运行ndk-build BASH脚本。NDK中的脚本可能会在bash中以Windows运行。

这个问题的讨厌结论。

make透过PATH环境变量,用于包含usr/bin的任何内容。碰巧的是,由于我还将git安装在Windows 10 PC上,因此Git将以下文件夹添加到PATH

C:Program FilesGitusrbin

添加带有子字符串" usr bin"的任何路径将导致尝试运行sh而不是在Windows上运行cmd.exe

我的解决方案:从我的PATH中删除C:Program FilesGitusrbin

更新:我将名称从usrbin更改为userbin,但是make仍然在该文件夹中找到sh.exe。最后,我将sh.exe重命名为Gitusrbin文件夹中的_sh.exe

相关内容

最新更新