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

标签 windows-10 mingw gnu-make

我最近从 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.exeGit\usr\bin文件夹。

关于windows-10 - 为什么 make.exe 尝试在 Windows 上运行/usr/bin/sh?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47874932/

相关文章:

gcc - 如何在makefile中设置环境变量?

build-process - 指定为对多个规则的依赖时重新执行目标

c - 使用 Clang 和 MinGW 出现错误 "undefined reference to ' strsep'"

makefile - 如何使 Make *not* 打印“目标配方失败?

c# - 无法在类库(可移植)-PCL 中安装 MvvmCross 包

push-notification - 如何在单击按钮时消除 uWP 中的 toast

registry - 创建批处理文件以撤消 Windows 10 新的默认打印机行为

c# - UWP - 项目中包含的文件出现 UnauthorizedAccessException

c - winnt.h 中的 Mingw32 中未定义 LPCTSTR 到 LPWSTR 的转换

c++ - std::thread 不是使用 Eclipse Kepler MinGW 命名空间 std 的成员