以下の GNU makefile の例について質問があります。
.PHONY: $(subdirs) build x y
subdirs = a b c
build: x y
x: target=prepare
x: $(subdirs)
y: target=build
y: $(subdirs)
$(subdirs):
$(make) -f $@/makefile $(target)
make を実行すると、サブディレクトリごとにターゲット 'prepare' を指定してからターゲット 'build' を指定して make が呼び出されることを期待しています。残念ながら、$(subdirs) ターゲットは 1 回実行されます ('prepare' ターゲットを作成します) が、'build' ターゲットに対して再度実行されることはありません。
ルール x の場合、make は $(subdirs) ターゲットを実行する必要があると判断しますが、ルール y の場合、$(subdirs) ターゲットは最新です。
これを修正する方法はありますか?
ありがとう!