多段makeしよう

多段makeで検索して辿り着く人が多いようなので、解説しておこうと思います。

多段makeとは?


こんな感じ。

多段makeしてみる。

早速ですが、多段makeしてみます。

ファイル構成です。

Makefile
dirA/Makefile
dirB/Makefile

Makefileしかありません(汗


Makefile

default : A B
	@echo this is top dir
A :
	make -C dirA
B :
	make -C dirB

make -C dirAは、

cd dirA && makeと同意です。

dirA/Makefie

default :
	@echo this is dirA

dirB/Makefieも同じような感じ。

実行してみます。

> make
make -C dirA
make[1]: Entering directory `D:/home/dev/study/make/dirA'
this is dirA
make[1]: Leaving directory `D:/home/dev/study/make/dirA'
make -C dirB
make[1]: Entering directory `D:/home/dev/study/make/dirB'
this is dirB
make[1]: Leaving directory `D:/home/dev/study/make/dirB'
this is top dir

上手くいったようですが・・・表示が邪魔です。

ディレクトリを移動しました。ディレクトリを出ました。ってわかっとるわい!!

make = make --no-print-directory

default : A B
	@echo this is top dir
A :
	$(make) -C dirA
B :
	$(make) -C dirB

--no-print-directoryでディレクトリ表示を、非表示にします。

> make
make --no-print-directory -C dirA
this is dirA
make --no-print-directory -C dirB
this is dirB
this is top dir

スッキリです。依存順に実行されているようです。

ツールやディレクトリ構成等の指定は、includeを使うともっとスッキリすると思います。

参考:makeの再帰利用