Makefile 如何在变量中间插入特设参数?
我有以下生成文件:Makefile 如何在变量中间插入特设参数?,makefile,gnu-make,Makefile,Gnu Make,我有以下生成文件: PROG := "prog -o1 one -o2 two --" 在--之后不能出现任何内容。这通常是我想要的prog调用模式: thing: $(PROG) some files here 但是有一个特殊的目标,我想称之为prog-o1-o2-2-o3-3-其他一些文件,所以我尝试做的是(假设:=设置变量进行延迟计算,尽管我似乎误解了其中的上下文): 似乎PROG在分配时被扩展为:=;有没有一种方法可以实现我想要的(例如,通过某种延迟扩展)?在更仔细地阅读手册
PROG := "prog -o1 one -o2 two --"
在--
之后不能出现任何内容。这通常是我想要的prog
调用模式:
thing:
$(PROG) some files here
但是有一个特殊的目标,我想称之为prog-o1-o2-2-o3-3-其他一些文件
,所以我尝试做的是(假设:=
设置变量进行延迟计算,尽管我似乎误解了其中的上下文):
似乎
PROG
在分配时被扩展为:=
;有没有一种方法可以实现我想要的(例如,通过某种延迟扩展)?在更仔细地阅读手册后,我了解到:=
作业会立即展开,而=
会递归展开(出于我的目的,“延迟”)
使用=
分配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
你真的,真的不想在变量中加引号。Make不是shell:它不解析任何引号。它们被简单地当作普通字符处理并传递给shell,这将破坏您的命令。@madcasciient Nice catch,谢谢:-)我已更新了答案以省略引号。
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