如何在变量中间插入临时参数?

时间:2018-06-03 20:44:22

标签: makefile gnu-make

我有以下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正在与:=分配时进行扩展;有没有办法让我想要(例如有某种懒惰的扩展)?

1 个答案:

答案 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