如何处理makefile(gnu make)中的多个文件,以及:
我想出了这个。它的工作原理,除了最后一个要求,并且非常unMake:
.PHONY: lint
.PHONY: all
all: lint
lint:
for f in `find src/ -name \*.inc -o -name \*.html`; do php -l $$f && continue || exit 1; done
答案 0 :(得分:3)
你的orignal makefile的更像make的转录:
files := $(shell find src/ -name \*.inc -o -name \*.html)
.PHONY: ${files}
${files}: ; php -l $@
.PHONY: lint
lint: ${files} ; echo Lint finished
我真的真的不喜欢在makefile中使用$(shell…)
。我个人会列出Makefile中的所有文件,也许是一个目标来断言列表是完整的。
如果您需要最后一点(“即使在第一次失败后仍继续运行所有文件”),请使用make -k
。
答案 1 :(得分:1)
我建议你把它重写为make风格,比如这样:
files = ....
lint_targets = $(addsuffix .lint, $(files))
lint: $(lint_targets)
.PHONY: lint $(lint_targets)
$(lint_targets):
@php -l $(basename $@)