Sun WorkShop TeamWare ユーザーズガイド

依存関係リスト

ターゲットを並列して構築を行う場合、依存関係リストを正確に記述することが必要です。たとえば、2 つの実行可能ファイルが同一のオブジェクトファイルを使用する場合に、一方の実行可能ファイルのみで依存関係を指定していると、並列モードの構築処理はエラーになります。次のような記述を含むメークファイルがあるとします。


all: prog1 prog2 
prog1: prog1.o aux.o 
	$(LINK.c) prog1.o aux.o -o prog1 
prog2: prog2.o 
	$(LINK.c) prog2.o aux.o -o prog2 

逐次モードで構築を行う場合、ターゲット aux.oprog1 の依存ファイルとして構築され、prog2 の構築の際に更新されます。一方、構築が並列モードで行われた場合、aux.o が構築される前に prog2 のリンクが開始されるため、正しい結果が得られないことになります。make.KEEP_STATE 機能を使用すると、依存関係の検査を行うことができますが、上記のような関係は検査されません。