晴耕雨読

working in the fields on fine days and reading books on rainy days

Makefileから別のMakefileをimportする・実行する

Makefileから別のMakefileをimportしたり、実行したりする方法について。 ディレクトリ構造は以下のようなのを想定しています。

.
├── Makefile      <= 実行するMakefile
└── sub/
    └── Makefile  <= 呼び出されるMakefile

include

別のMakefileをimportするには、includeを使います。

プログラム

# ./Makefile

include sub/Makefile
# ./sub/Makefile

subprocess:
	@echo "This is a subprocess."

実行結果

$ make subprocess
This is a subprocess.

cd sub && make

下のディレクトリに移動してから実行したい場合もあります。 その時は cd sub && make とするのですが、実行してみると 「/bin/sh: line 0: cd: sub: No such file or directory」 と怒られてしまいます。 どうやら Makefile 内で実行する /bin/sh は相対パスで cd できない様なので、代わりに cd "$(PWD)/sub" && make と書きます。

プログラム

# ./Makefile

subprocess:
	cd "$(PWD)/sub" && make subprocess
# ./sub/Makefile

subprocess:
	@echo "This is a subprocess."

実行結果

$ make subprocess
cd "path/to/sub" && make subprocess
This is a subprocess.