Makefile 如何使用文件列表创建文件模式规则

Makefile 如何使用文件列表创建文件模式规则,makefile,gnu-make,Makefile,Gnu Make,想知道如何在Makefile中应用这样的东西来完成以下任务: FILES := a b c d $(FILES).c: run build $(FILE).c # use $(FILE) without .c extension, etc. 无需命名文件中的所有值,如a.c、b.c等,因为我将在其他地方使用这些名称 如果我用make a.c尝试上述方法,我会得到: No rule to make target `a.c'. Stop. 已在列表上运行的内置函数在这里可能很有用:

想知道如何在Makefile中应用这样的东西来完成以下任务:

FILES := a b c d

$(FILES).c:
  run build $(FILE).c
  # use $(FILE) without .c extension, etc.
无需命名
文件
中的所有值,如
a.c
b.c
等,因为我将在其他地方使用这些名称

如果我用
make a.c
尝试上述方法,我会得到:

No rule to make target `a.c'.  Stop.
已在列表上运行的内置函数在这里可能很有用:

targets := $(addsuffix .c,$(FILES))

但是,您可以简单地使用模式规则。自动变量
$*
将对应于阀杆(即
%
零件):


现在能用了吗?或者那些
.c
文件的虚假目标在哪里?对于虚假目标,你需要的是静态模式规则。@LancePollard太棒了!
%.c:
   run build $@
   # use $* for filename without .c extension, etc.