どせいたんさき。

ナスダヨー

make でたくさんある下位ディレクトリを一括処理したい

目的

とあるディレクトリの下に似たようなファイルを持ったディレクトリがたくさんある.これらのディレクトリに対して同一の処理を make を介して実行したい.


例えば以下のような構成を考える.

$ ls ./
Makefile Makefile.in cmd.sh dir01 dir02 dir03 ... dir99

$ ls ./dir01
Makefile data

...

$ ls ./dir99
Makefile data

解決方法

@forinclude を用いた.

# ./Makefile
SUBDIRS := $(wildcard dir*)

all:
  @for subdir in $(SUBDIRS); do (make -C $$subdir all); done
# ./Makefile.in
ROOT := /path/to/here
CMD := $(ROOT)/cmd.sh
# ./dir??/Makefile
all: output
output: data
  $(CMD) data > output