Sun WorkShop TeamWare ユーザーズガイド

dmake の入れ子呼び出し

dmake は、ほかのdmake コマンドを呼び出すターゲットを検出した場合、そのターゲットは並列構築せずに、逐次構築します。これによって、2 つの異なる dmake が同じディレクトリ中の同じターゲットを構築しようとするという問題を回避することができます。この問題は、同じライブラリにアクセスする必要のある 2 つの異なるプログラムが並列構築された場合に起こります。各 dmake 呼び出しでライブラリが最新であることを確認できる唯一の方法として、dmake を再帰的に呼び出してライブラリを構築することができます。コマンド行で $(MAKE) マクロを指定すると、dmake ユーティリティが入れ子呼び出しを認識できます。

入れ子にしたコマンドが衝突を起こさないとわかっている場合は、.PARALLEL: を使用して、強制的に並列構築が行われるようにすることができます。

メークファイルの中に、並行して実行される入れ子のコマンドが多数含まれている場合、負荷平均化アルゴリズムによって、強制的にローカルマシンへの構築処理が過剰に割り当てられることがあります。これによって、負荷が大きくなったり、スワップ領域が不足するなどの問題を引き起こすことがあります。こうした問題が発生した場合は、入れ子にしたコマンドを逐次的に実行するようにしてください。