我最近从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.
最干净的方法是在命令行上指定SHELL
。
make -ftest.mak clean SHELL=cmd
会做的。 ndk-build会为你做这件事,看你的ndk-build.cmd
。不要尝试在Windows上运行ndk-build
bash脚本。当您在Windows上以bash运行时,NDK中的脚本可能会变为amoc。
令人讨厌的结论是这个问题。
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\bin
但make
仍然在该文件夹中找到sh.exe
。最后,我在sh.exe
文件夹中将_sh.exe
重命名为Git\usr\bin
。