我最近从窗口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
。