假设我有一些名为foo.c
,bar.c
,baz.c
的文件,...我想为每个运行构建任务的文件创建一个Makefile目标。
foo:
make foo.c
.PHONY: foo
foo.c:
run build foo
bar:
make bar.c
.PHONY: bar
bar.c:
run build bar
...
我基本上只想做make foo
并构建make foo.c
。但我有x个文件,并希望为每个文件制作任务。如何做到这一点。类似的东西:
FILES = $(foo bar baz ...)
$(FILES): $(FILES)
make $(FILE)
.PHONY: $(FILE)
$(FILES).c: $(FILES)
run build $(FILE)
但是所有文件都彼此独立。
答案 0 :(得分:1)
您可以pattern rules用于.c
目标,static pattern rules用于那些必须是虚假目标的目标(即foo
和bar
示例):
targets := foo bar
.PHONY: $(targets)
# static pattern rule
$(targets): %:
make $*.c
# pattern rule
%.c:
run build $*