Windows gmake使用sh.exe会导致生成错误

Windows gmake使用sh.exe会导致生成错误,windows,bash,shell,gnu-make,Windows,Bash,Shell,Gnu Make,当sh.exe不在路径上时,我有一个在Windows系统上工作的makefile。但当sh.exe位于Windows路径上时,它会因错误而停止。显然,sh.exe无法处理混合/和\的路径,例如: cc $CFLAGS) C:\a\b/c/d/myfile.c 它生成以下错误 Fatal error: could not open source file "c:ab/c/d/myfile.c" 由于我无法更改makefile(它是由某些应用程序自动生成的),如何强制gmake不使用sh.e

当sh.exe不在路径上时,我有一个在Windows系统上工作的makefile。但当sh.exe位于Windows路径上时,它会因错误而停止。显然,sh.exe无法处理混合/和\的路径,例如:

 cc $CFLAGS) C:\a\b/c/d/myfile.c
它生成以下错误

 Fatal error: could not open source file "c:ab/c/d/myfile.c"
由于我无法更改makefile(它是由某些应用程序自动生成的),如何强制gmake不使用sh.exe或强制sh.exe接受此类文件?

请尝试
gmake SHELL=“cmd”
。有关更多信息,请参阅。特别要注意的是:

请注意,对shell的扩展搜索仅限于案例 其中SHELL是从Makefile设置的;如果它是在环境中设置的 或命令行,您需要将其设置为的完整路径名 shell,与Unix上的情况完全相同


能否修改路径,以便在
sh
之前找到
cmd
?这是cygwin环境吗?@AdamBurry:不,我不能更改路径,因为我正在开发一个应该在客户系统上工作的系统,我不能更改客户系统上的路径。不,我正在使用TI环境进行开发。那么
gmake SHELL=“cmd”
呢@AdamBurry:我试图设置SHELL环境变量,但没有成功。我甚至将SHELL=“cmd”放在make文件中进行测试,但没有成功。@AdamBurry:谢谢,它成功了。请添加您的评论作为答案,我将接受。在同一份文件中,它还说“与大多数变量不同,变量外壳从不从环境中设置。这是因为SHELL环境变量用于指定交互式使用的SHELL程序的个人选择。这样的个人选择会影响makefiles的功能,这是非常糟糕的。请参阅环境变量。“WTF???@问题是关于Windows系统上的gmake。在这种情况下,gmake对SHELL变量的处理方式不同。具体而言,“但是,在MS-DOS和MS-Windows上,使用的是环境中SHELL的值,因为在这些系统上,大多数用户不设置此变量,因此,它很可能被专门设置为make使用。“哦,我不是在抱怨你的答案。我只是对GNU make关于这个问题的文档感到困惑,在我看来,它完全自相矛盾。