3

makefile(gnu make)内の複数のファイルを処理するにはどうすればよいですか?

  • ファイルごとに1つのコマンドまたは一連のコマンドを実行します
  • ゼロより大きい単一のエラーコードで失敗する
  • 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
4

2 に答える 2

3

元のmakefileのよりmakeに似た転写:

files := $(shell find src/ -name \*.inc -o -name \*.html)
.PHONY: ${files}
${files}: ; php -l $@

.PHONY: lint
lint: ${files} ; echo Lint finished

私はmakefilesでの使用が本当に好きではありません。$(shell…)個人的には、Makefile内のすべてのファイルをリストします。おそらく、リストが完全であることを表明するターゲットを使用します。

最後のポイントが必要な場合(「最初の失敗後もすべてのファイルで実行を継続する」)、を使用しますmake -k

于 2011-03-24T17:49:26.353 に答える
1

もっとmakeスタイルになるように書き直すことをお勧めします。つまり、次のようになります。

files = ....

lint_targets = $(addsuffix .lint, $(files))

lint: $(lint_targets)

.PHONY: lint $(lint_targets)

$(lint_targets): 
    @php -l $(basename $@)
于 2011-03-24T07:52:50.227 に答える