在makefile中,我有以下内容:
SHELL = $(SOME_DIRECTORY)/sh
showme:
echo $(SHELL)
这是在MS Windows上。情况是make
位于PATH
(或正在被直接调用),但可接受的shell(即sh.exe
)不在PATH
中。也不是全局修改PATH
变量以包含sh.exe
的选项(Cygwin,msysgit等之间存在太多潜在冲突)。因此,make
默认使用Windows cmd.exe
命令处理器,这很难理想。
是设置除PATH
以外的系统范围环境变量的选项。所以我有一个明智的想法,即在SOME_DIRECTORY
中放置包含sh.exe的目录的路径,然后在makefile中的SHELL
变量中使用它。但它不能解决一些令人沮丧的原因:
make
echo sh.exe
sh.exe
如果我使用除SHELL
以外的任何其他变量并回显它,则会打印出预期结果。但是当然这没有改变shell的预期效果。
我在这里缺少什么?如何使用自定义用户指定的名称(即不是SHELL
,PATH
等)来生成具有make使用的shell的环境变量,我需要做什么?
答案 0 :(得分:0)
你使用哪种制作? GNU make(gmake
)3.82是最常见的,它应该以您期望的方式工作。正如MadScientist所指出的,gmake
在Windows SHELL
下的表现不同。
您应该能够将SHELL
设置为现有可执行文件的完整路径,gmake
将使用它来执行命令。
但是:如果未设置SHELL
或者如果设置为不存在的文件,则gmake
将使用ComSpec
(请注意大写字母)的值作为shell。
您正在使用的测试路径上是否有exe?那么$(SOME_DIRECTORY)/sh
是一个现有的exe吗? (请注意,您可以省略'.exe',gmake
将为您提供,但文件必须存在)