Bash 在我的Makefile中无法识别{a,b}形式的目标
我有以下生成文件:Bash 在我的Makefile中无法识别{a,b}形式的目标,bash,makefile,gnu-make,Bash,Makefile,Gnu Make,我有以下生成文件: SHELL:/bin/bash all: euro.n.{a,b} euro.{a,b}: touch euro.{a,b} euro.n.{a,b}: euro.{a,b} cat euro.a > euro.n.a cat euro.b > euro.n.b 现在,如果我运行两次make,那么在第二次运行中,makefile将无法识别文件euro.n.a和euro.n.b已经创建(并且将再次执行) 有什
SHELL:/bin/bash
all: euro.n.{a,b}
euro.{a,b}:
touch euro.{a,b}
euro.n.{a,b}: euro.{a,b}
cat euro.a > euro.n.a
cat euro.b > euro.n.b
现在,如果我运行两次make
,那么在第二次运行中,makefile将无法识别文件euro.n.a和euro.n.b已经创建(并且将再次执行)
有什么问题
有什么问题
{a,b}
是GNU make无法识别的语法
SHELL:=/bin/bash
(您错过了那里的=
)只会影响配方的语法
一种替代解决方案:
SHELL := /bin/bash
all: $(addprefix euro.n.,a b)
euro.%:
touch $@
euro.n.% : euro.%
cp $< $@
SHELL:=/bin/bash
全部:$(添加前缀euro.n.,a b)
欧元。%:
触碰$@
欧元:欧元
cp$<$@
我理解这一点,但make是否有类似的语法可识别?@user86834在GNU make手册中查找$(addprefix…
,$(addsuffix…
,$(patsubst…
)。@user86834注意具有多个目标的makefile规则:GNU make使用普通的POSIX glob(3)和fnmatch(3)用于进行文件全局处理的函数。请参阅这些函数的手册页,以了解已识别的语法。@很抱歉,我不能将您的语句与上下文联系起来。