ソースディレクトリからターゲットディレクトリにファイルをコピーしたいと思います。そして、変更されていないファイルをコピーすることは避けたいと思います。したがって、%.:%.
ルールを使用して新しいファイルをチェックするmake機能を利用しようとしています。
この場合、ソースとターゲットの EXTENSION は同じです。オブジェクト ファイルは別の場所にありますが、グラフィック アセット用ではありません。
私はmake
画像をコピーするために使用します。
TARGET := target
SOURCE := source
GRAPHICS := $(foreach dir,$(SOURCE), $(wildcard $(dir)/*.jpg ) $(wildcard $(dir)/**/*.jpg ) $(wildcard $(dir)/*.png ) $(wildcard $(dir)/**/*.png ) $(wildcard $(dir)/*.gif ) $(wildcard $(dir)/**/*.gif ) )
JPG = $(GRAPHICS:.jpg=.tmp)
PNG = $(GRAPHICS:.png=.tmp)
GIF = $(GRAPHICS:.gif=.tmp)
次に、次のルールを使用して、ファイルをターゲット ディレクトリにコピーします。
%.tmp:%.jpg
find $< | cpio -p -d -v $(TARGET)
質問
- ここでTARGETディレクトリを文字列で置き換えることは可能ですか
- それによって、make newer 機能を使用しますか?
私は試した
JPG = $(GRAPHICS:$(TARGET).jpg=.tmp)
しかし、それは失敗しNo rule to make target
ます。同じディレクトリ内のソースとオブジェクトを比較することしかできませんか?
ソースとオブジェクトが同じ拡張子であるようなルールを作成できますか?
%.jpg:%.jpg
私が思いつくことができる最も近いものは次のとおりです。
$(TARGET)%.jpg:%.jpg
しかし、それは実行されません。掃除後も。