2017-04-12 3 views
0

これは簡単なことだと思っていましたが、わかりません。ディレクトリ内のすべてのzipファイルを解凍し、結果を別のディレクトリに配置したいとしましょう。すべてのファイルは、パターンregion_*.zipに従います。*はIDです。メイクファイルのすべてのディレクティブにターゲットファイルをワイルドカードで含める

raster/region_%.tif: zip/region_%.zip 
    unzip -d raster $< 

問題:allディレクティブにこの操作を含めるにはどうすればよいですか?

# Does not work 
all: raster_region_%.tif 

答えて

1

Makeは、作成するターゲットから常に元のファイル(この場合はzipファイル)に戻って動作します。

Makeには、どういうわけか、作成したいターゲットが何であるかを伝える必要があります。薄い空気からそれを直観することはできません。この場合

、あなたが最初のターゲットファイルに変換し、その後、すべてのzipファイルの一覧を取得する必要があり、各zipファイルのための.tifファイルビルドしたい場合:

ZIPFILES := $(wildcard zip/region_*.zip) 
TARGETS := $(patsubst zip/region_%.zip,raster/region_%.tif,$(ZIPFILES)) 

all: $(TARGETS) 
関連する問題