考虑以下Makefile
:
foo: FOOVAR:=$(shell prog_to_execute_only_on_foo)
foo:
echo "foo"
bar:
echo "bar"
我希望能够在不解析make bar
的shell命令的情况下运行FOOVAR
。< / p>
有可能吗?
如果没有,有办法解决这个问题吗?确保在运行make bar
?
答案 0 :(得分:2)
您可以通过将FOOVAR
定义为recursively expanded variable而不是简单扩展变量来实现这一目标(即使用=
代替:=
}):
foo: FOOVAR = $(shell prog_to_execute_only_on_foo)
foo:
echo "foo"
这种方式prog_to_execute_only_on_foo
将在展开FOOVAR
时执行。
但请注意,prog_to_execute_only_on_foo
每次 {em>}将FOOVAR
展开:=
,而简单展开变量(即, gdcmscanner -t 10,10 -d . -p
)它只会执行一次。