誰かがここで違いを明らかにできますか:
$(tsdir)/projには前提条件$(tsdir)/projaとがあり$(tsdir)/projbます。ビルドするたびにprojaとprojbの makefile が呼び出されるようにしprojます。projaまたはが古くて更新されている場合projb、そのメイクファイルはそれぞれ$(tsdir)/projaおよびに影響し$(tsdir)/projbます。これらのファイルが よりも新しい場合は$(tsdir)/proj、proj を再構築します。
FORCE以下のコードとターゲットを使用して、これを機能させます。ターゲットを使用するように切り替えようとする.PHONYと、これは機能しません。.PHONYそれがおそらくこれを行うためのより「正しい」方法であるため、私は好みます。しかし、それは機能せず、理由がわかりません。projaとprojbの makefile は.PHONYターゲットで呼び出されませんが、proj再構築されます。
GNU make 3.81 を使用しています。
ありがとうナチュム
$(tsdir)/proj: $(tsdir)/proja $(tsdir)/projb
...
$(tsdir)/%: FORCE
make -C $(prereqdir)/$*
FORCE:
#or
$(tsdir)/proj: $(tsdir)/proja $(tsdir)/projb
...
.PHONY: $(addprefix $(tsdir)/, $(projects))
$(tsdir)/%:
make -C $(prereqdir)/$*