我有以下Makefile:
PROG := "prog -o1 one -o2 two --"
在 --
之后 这通常是我想要prog
的调用模式:
thing:
$(PROG) some files here
但是有一个特殊的目标,我想称之为prog -o1 one -o2 two -o3 three -- some other file
,所以这就是我尝试做的事情(假设:=
设置变量进行延迟评估,尽管似乎我误解了那里的背景):
PROG := "prog -o1 one -o2 two $(OTHER_PROG_ARGS) --"
thing:
$(PROG) some files here
other : OTHER_PROG_ARGS="-o3 three"
other:
$(PROG) some other file
似乎PROG
正在与:=
分配时进行扩展;有没有办法让我想要(例如有某种懒惰的扩展)?
答案 0 :(得分:0)
在仔细阅读本手册之后,specifically the difference between :=
and =
,我了解到:=
分配会立即展开,=
会递归展开(为了我的目的,'懒惰&#39} ;)
使用PROG
分配=
并像以前一样提供特定于目标的变量,以下工作:
PROG = prog -o1 one -o2 two $(OTHER_PROG_ARGS) --
thing:
$(PROG) some files here
other: OTHER_PROG_ARGS = -o3 three
other:
$(PROG) some other file