一个环境变量在一个makefile,我有以下几点:使用的GNU makefile文件SHELL变量
这是在MS Windows。情况是make
在PATH
(或直接调用)中,但可接受的shell(即sh.exe
)不在PATH
中。也不是全局修改PATH
变量以包含sh.exe
(Cygwin,msysgit和更多之间的潜在冲突太多)的选项。因此,make
默认使用Windows cmd.exe
命令处理器,这并不理想。
它是但是,设置除PATH
以外的系统范围环境变量的选项。所以我有一个明智的想法,把一个路径放到包含sh.exe的目录中SOME_DIRECTORY
,然后在makefile的SHELL
变量中使用它。但它不工作了一段令人沮丧的原因:
make
echo sh.exe
sh.exe
如果我用比SHELL
任何其他变量和回声它,然后它打印预期的结果。但是,当然这并没有改变shell的预期效果。
我在这里错过了什么?我需要做什么才能使用具有自定义用户指定名称的环境变量(即不是SHELL
,PATH
等)影响make所使用的shell?
不幸的是,在Windows上使用shell的行为很复杂,因为Windows没有像样的shell。在GNU make手册中有一些关于Windows特定行为的讨论:http://www.gnu.org/software/make/manual/html_node/Choosing-the-Shell.html如果这不能回答你的问题,我建议你在[email protected]邮件列表上询问,该邮件列表专门针对有关Windows上的GNU make的问题 - 很多人对此非常了解。 – MadScientist
使用Cygwin make。 _Very_兼容和跨平台。 (例如,你的例子工作正常。) – bobbogo