【问题标题】:GNU Make: How to export the SHELL variable to sub-makes?GNU Make:如何将 SHELL 变量导出到子制作?
【发布时间】:2010-07-12 08:15:38
【问题描述】:

来自 GNU Make 手册:

make 变量 SHELL 的值 不出口。相反,价值 来自调用的 SHELL 变量 环境被传递给子make。 您可以强制 make 导出其值 使用导出为 SHELL 指令,如下所述。

我一定是做错了什么,或者没有正确阅读手册,因为这个简单的例子不起作用:

# ./Makefile
export SHELL := /bin/bash
export VALUE := exported_variable
$(info root makefile SHELL=$(SHELL))
call_sub_make:
    $(MAKE) --directory=subdir

还有子目录/Makefile:

$(info subdir makefile SHELL=$(SHELL))
$(info subdir makefile VALUE=$(VALUE))
do_nothing:

输出:

$ env | grep SHELL
SHELL=/bin/bash
$ make --version
GNU Make 3.81
$ make
root makefile SHELL=/bin/bash
make --directory=subdir
subdir makefile SHELL=/bin/sh
subdir makefile VALUE=exported_variable
make[1]: Entering directory `/home/drtwox/C/make/export_shell/subdir'
make[1]: Nothing to be done for `do_nothing'.
make[1]: Leaving directory `/home/drtwox/C/make/export_shell/subdir'

VALUE 已导出,为什么不是 SHELL?

【问题讨论】:

    标签: makefile gnu-make


    【解决方案1】:

    SHELL 被导出(到 sub-make 的环境)好了,但是the manual 也说

    与大多数变量不同,SHELL 变量永远不会从环境中设置。

    如果你想影响子品牌对 SHELL 的想法,你必须这样做:

    call_sub_make:
        $(MAKE) --directory=subdir SHELL=$(SHELL)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      相关资源
      最近更新 更多