Linux Makefile:需要执行存储在列表中的命令

Linux Makefile:需要执行存储在列表中的命令,linux,makefile,gnu-make,Linux,Makefile,Gnu Make,我试图执行以下代码 LIST = 0 1 3 4 5 targets = $(addprefix rambo, $(LIST)) all: $(targets) $(targets): rambo%: rambo%.sh @echo "" > tests/runners/$< 我不确定代码出了什么问题。基本上,我试图通过执行makefile动态创建一个文件 提前感谢。该错误表示当前目录中没有rambo0.sh文件 静态模式规则的语

我试图执行以下代码

    LIST = 0 1 3 4 5
    targets = $(addprefix rambo, $(LIST))

    all: $(targets)

    $(targets): rambo%: rambo%.sh
        @echo "" > tests/runners/$<
我不确定代码出了什么问题。基本上,我试图通过执行makefile动态创建一个文件


提前感谢。

该错误表示当前目录中没有
rambo0.sh
文件

静态模式规则的语法为

其中
targets
是字面目标名称,以及

[e] 根据目标模式匹配每个目标以提取零件 目标名称的名称,称为干。这根茎被替换成了一根 每个prereq模式用于生成先决条件名称(一个来自 每个预请求模式)

因为这似乎是你试图用这条规则创造的,我相信你想要:

targets = $(addsuffix .sh,$(addprefix rambo,$(LIST)))
# Alternatively
# targets = $(patsubst %,rambo%.sh,$(LIST))

$(targets): rambo%.sh :
可能

$(targets): rambo%.sh : rambo%
如果
rambo%
是一个已经存在的文件或目录,并且是您尝试创建的shell脚本文件的先决条件

$(targets): rambo%.sh : rambo%