繁体   English   中英

在GNU makefile SHELL变量中使用环境变量

[英]Using an environment variable in GNU makefile SHELL variable

在makefile中,我有以下内容:

SHELL = $(SOME_DIRECTORY)/sh

showme:
    echo $(SHELL)

这是在MS Windows上。 情况是makePATH (或被直接调用)但是可接受的shell(即sh.exesh.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的预期效果。

我在这里错过了什么? 如果要使用自定义用户指定的名称(即不是SHELLPATH等)的环境变量影响make使用的shell,我需要做什么?

你使用哪种制作? GNU make( gmake )3.82是最常见的,它应该以你期望的方式工作。 正如MadScientist所说, gmakeSHELL Windows下表现不同。

您应该能够将SHELL设置为现有可执行文件的完整路径, gmake将使用它来执行命令。

但是:如果未设置SHELL或者如果将其设置为不存在的文件,则gmake将使用ComSpec (请注意大写)作为shell。

你正在使用的测试路径上是否有exe? 那么$(SOME_DIRECTORY)/sh是一个现有的exe吗? (请注意,您可以省略'.exe', gmake将为您提供,但该文件必须存在)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM