如何从makefile打印环境变量?

如何从makefile打印环境变量?,makefile,gnu-make,Makefile,Gnu Make,读完这个答案后: ,使用方法 $(info text…) $(info $(var)) 我在makefile中尝试过: .PHONY: all all: ; $(info $(var)) (在bash外部设置了var),我得到了输出: make:对“所有人”都不做任何事情。 那么,如何在makefile中打印makefile外部定义的变量?如何从makefile打印环境变量 你可以完全按照你在问题中说的去做。例如: 以下是生成文件: .PHONY: all all: ; $(info

读完这个答案后: ,使用方法

$(info    text…)
$(info $(var))
我在makefile中尝试过:

.PHONY: all

all: ; $(info $(var))
(在bash外部设置了
var
),我得到了输出:

make:对“所有人”都不做任何事情。
那么,如何在makefile中打印makefile外部定义的变量?

如何从makefile打印环境变量

你可以完全按照你在问题中说的去做。例如:

以下是生成文件:

.PHONY: all
all: ; $(info VAR='$(VAR)')
现在,在运行make之前,在命令行上设置环境变量VAR:

$ VAR=foo make
VAR='foo'
make: Nothing to be done for 'all'.
或将其导出,然后运行make:

$ export VAR=bar
$ make
VAR='bar'
make: Nothing to be done for 'all'.
$ VAR=foo make
VAR='foo'
make: *** No targets. Stop.
所以,你需要看看其他地方,找出这对你不起作用的原因

请注意,您不需要将
$(info)
放入配方中;例如,这里有一个打印环境变量的单行makefile:

生成文件:

.PHONY: all
all: ; $(info VAR='$(VAR)')
$(info VAR='$(VAR)')
设置环境变量VAR并运行make:

$ export VAR=bar
$ make
VAR='bar'
make: Nothing to be done for 'all'.
$ VAR=foo make
VAR='foo'
make: *** No targets. Stop.

请提供完整的剪切和粘贴命令集。例如,
var
实际上是如何设置的?你跑得怎么样?您的makefile的名称是什么?我建议您更改输出,以便在未设置变量时,它打印的不仅仅是一个空行,例如
$(info var='$(var))
,以便更容易理解发生了什么。