makefile 使用目标中定义的变量

vin*_*i_f 3 makefile

如何使用在 make 目标中定义的变量

.PHONY: foo

VAR_GLOBAL=$(shell cat /tmp/global)

foo:
    echo "local" > /tmp/local
    VAR_LOCAL=$(shell cat /tmp/local)
    echo ${VAR_GLOBAL}
    echo ${VAR_LOCAL}
Run Code Online (Sandbox Code Playgroud)

这是执行输出:

$ echo global > /tmp/global
$ make foo
echo "local" > /tmp/local
VAR_LOCAL=local
echo global
global
echo
Run Code Online (Sandbox Code Playgroud)

vin*_*i_f 5

正如@KelvinSherlock 指出的,这是另一个问题的重复

这是我的问题的具体解决方案:

.PHONY: foo

VAR_GLOBAL=$(shell cat /tmp/global)

foo:
    echo "local" > /tmp/local
    $(eval VAR_LOCAL := $(shell cat /tmp/local))
    echo ${VAR_GLOBAL}
    echo ${VAR_LOCAL}
Run Code Online (Sandbox Code Playgroud)