我最近从 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
工作所以它不会尝试执行 sh
在 Windows 下?是否有一些配置参数使它调用
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.
最佳答案
这个问题的结论令人讨厌。make
翻阅PATH
任何包含 usr/bin
的环境变量.碰巧的是,由于我还在 Windows 10 PC 上安装了 Git,Git 将以下文件夹添加到 PATH
:
C:\Program Files\Git\usr\bin
添加 任何 带有子字符串“usr\bin”的路径将导致 make 尝试运行
sh
而不是 cmd.exe
在 Windows 上。我的解决方案:删除
C:\Program Files\Git\usr\bin
来自我的 PATH
.更新:我从
usr\bin
更改了名称至 user\bin
但是 make
仍然找到 sh.exe
在那个文件夹内。最后我改名sh.exe
至 _sh.exe
内Git\usr\bin
文件夹。
关于windows-10 - 为什么 make.exe 尝试在 Windows 上运行/usr/bin/sh?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47874932/