ファイル個別処理
個別ファイル処理
任意のディレクトリAに格納されているファイルをコマンドで処理し、その結果をファイルごとに、別ディレクトリBへ出力する。
INPUT := input/
OUTPUT := output/
INFILES := $(wildcard $(INPUT)*)
OUTFILES := $(INFILES:$(INPUT)%=$(OUTPUT)%)
default: $(OUTFILES)
$(OUTPUT)%: $(INPUT)%
cat $< > $@
clean:
rm -f $(OUTPUT)*
詳細
INPUT変数は、入力ファイルが存在するディレクトリのパスを表します。OUTPUT変数は、出力ファイルが生成されるディレクトリのパスを表します。INFILES変数は、INPUTディレクトリ内のすべてのファイルのリストを取得します。OUTFILES変数は、各入力ファイルのパスをINPUTからOUTPUTに変更したもののリストを作成します。defaultターゲットは、OUTFILES内の各ファイルを生成することを指定しています。これはMakefileがデフォルトで実行された場合の動作を定義しています。- ルール
$(OUTPUT)%: $(INPUT)%は、各出力ファイルを生成するためのルールを指定しています。具体的な処理は、cat $< > $@で、各入力ファイルを対応する出力ファイルに単純にコピーします。
つまり、このMakefileは、INPUTディレクトリ内のファイルをOUTPUTディレクトリにコピーする単純なタスクを自動化しています。
cat $< > $@を変更すると、Makefileの挙動が変わります。この行は、入力ファイルから内容を読み取り、それを出力ファイルに書き込むことを意味しています。変更することで、他の処理や変換を行うことができます。