makefile,处理几个文件

时间:2011-03-24 03:27:34

标签: makefile gnu-make lint

如何处理makefile(gnu make)中的多个文件,以及:

  • 为每个文件运行一个命令或一系列命令
  • 在大于零的单个错误代码上失败
  • 无需在makefile中输入每个文件名
  • 即使在第一次失败后继续运行所有文件

我想出了这个。它的工作原理,除了最后一个要求,并且非常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

2 个答案:

答案 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 $@)
相关问题