2009-08-24 3 views
1

結果のファイル名の一部として適合しない検索パターンがいくつかあります。したがって、私は正規表現と対応するファイル名部分を以下のような2つの異なる変数に分割しました。次のように自動化することで、ALLのファイルを手動でリストする必要はなく、grepを実行するルールを手動で入力する必要はありません。makefileのルールを2つの変数から同時に自動化

SEARCH_RE = test a/b/c a.*b 
SEARCH_FILE = test abc ab 

ALL = result.test result.abc result.ab 

all: $(ALL) 

result.test: 
     grep test inputfile > result.test 

result.abc: 
     grep a/b/c inputfile > result.abc 

result.ab 
     grep a.*b inputfile > result.ab 

答えて

1

私はルールを記述するためとして

 
ALL = $(addprefix result.,$(SEARCH_FILE)) 

をお勧めします、種類をあなたが望むと思うルックアップは、Makeで行うことができますが、実際はそうすべきではありません。恐ろしいクルージングになります。私はこのようにすることをお勧めします:

+0

私が望むように完全に自動化されたわけではありませんが、これは少なくとも重複したルールを持つよりもずっと優れています。ありがとうございました。 – hlovdal

1

私はルールを作成する方法を知りませんが、ALL目標は十分に簡単です:

ALL = $(patsubst %,result.%,$(SEARCH_FILE)) 
+0

良い。私はまた、 "ALL = $(foreachファイル、$(SEARCH_FILE)、結果。$(ファイル))"が動作することを発見しました。 – hlovdal

関連する問題