[英]Makefile: target-specific variables are always resolved
考慮以下Makefile
:
foo: FOOVAR:=$(shell prog_to_execute_only_on_foo)
foo:
echo "foo"
bar:
echo "bar"
我希望能夠在不解決FOOVAR
的shell命令的情況下運行make bar
。
可能嗎?
如果沒有,是否有解決方法? 確保運行make bar
時不會執行shell命令?
您可以通過將FOOVAR
定義為遞歸擴展變量而不是簡單擴展變量來實現此FOOVAR
(即,使用=
代替:=
):
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
都會執行FOOVAR
,而對於簡單擴展的變量 (即:=
),它將僅執行一次 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.