如何抑制命令行定义被导出到子make?

时间:2015-08-06 09:37:26

标签: makefile

makefile可能类似于以下内容:

MAKEOVERRIDES=

all:
    @$(MAKE) recursive

recursive:
    @echo $(foo)


.PHONY: all
.PHONY: recursive

如果我跑:

$ make foo=bar

我明白了:

make[1]: Entering directory '/home/myname'
bar
make[1]: Leaving directory '/home/myname'

描述了抑制命令行定义的想法here

  

命令行变量定义确实出现在变量中   ' MAKEOVERRIDES'和' MAKEFLAGS'包含对此变量的引用。   如果您确实想要正常传递旗帜,但又不想传递旗帜   命令行变量定义,你可以重置' MAKEOVERRIDES'至   空的,像这样:

 MAKEOVERRIDES =

1 个答案:

答案 0 :(得分:0)

要禁止将变量导出到子使用unexport

MAKEOVERRIDES=
unexport foo

all:
    @$(MAKE) recursive

recursive:
    @echo $(foo)


.PHONY: all
.PHONY: recursive