FromNandの日記

自分的備忘録

多すぎるmakefileを分割する方法

まずディレクトリdirのなかにディレクトリdir1とdir2が格納されていたとする。

・dirの中にはmakefileしかない。

・dir1にはsrc1,makefileが含まれている。

・dir2にはsrc2,makefileが含まれている。



この時、いちいちmakefileの中でほかのディレクトリのファイルを操作するのはしんどい。

なのでmakefileを分割しようと考えた。

解決策として、dir,dir1,dir2すべてのディレクトリの中にmakefileを用意するというものがある。



例えば、この時それぞれのファイルには次のように記述する。

# dir/makefile

OBJ=src1.o src2.o

.PHONY: target dir1_obj dir2_obj

target : dir1_obj dir2_obj
        gcc -o $@ $(OBJ)

dir1_obj :
        cd dir1;
make all

dir2_obj :
        cd dir2;
make all

# dir/dir1/makefile

DIR=./../

.PHONY: all

all : src1.c
        gcc -c $?
        mv src1.o $(DIR)

# dir/dir2/makefile

DIR=./../

.PHONY: all

all : src2.c
        gcc -c $?
        mv src2.o $(DIR)

このようにするとmakefileを分割することができ、複雑さを多少解消できるかもしれない。