[英]Using an environment variable in GNU makefile SHELL variable
在makefile中,我有以下内容:
SHELL = $(SOME_DIRECTORY)/sh
showme:
echo $(SHELL)
这是在MS Windows上。 情况是make
在PATH
(或被直接调用)但是可接受的shell(即sh.exe
) 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,我需要做什么?
你使用哪种制作? GNU make( gmake
)3.82是最常见的,它应该以你期望的方式工作。 正如MadScientist所说, gmake
在SHELL
Windows下表现不同。
您应该能够将SHELL
设置为现有可执行文件的完整路径, gmake
将使用它来执行命令。
但是:如果未设置SHELL
或者如果将其设置为不存在的文件,则gmake
将使用ComSpec
(请注意大写)作为shell。
你正在使用的测试路径上是否有exe? 那么$(SOME_DIRECTORY)/sh
是一个现有的exe吗? (请注意,您可以省略'.exe', gmake
将为您提供,但该文件必须存在)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.