いくつかのサブディレクトリにまたがるプロジェクトでは、ビルドに GNU make を使用します。開発者は-j <number>
フラグを使用してビルド タスクを並列化し、マシンのハードウェアに適した数を選択できます。
ただし、私たちが使用するサードパーティ ライブラリの Makefile は安全に並列化できません。すべての依存ターゲット間の明示的な依存関係ルールではなく、ターゲットの暗黙的な順序に依存しているようです。
私はサードパーティの Makefile を修正するつもりはないので、現在、-j 1
そのライブラリをビルドするためのジョブの数を 1 に制限する明示的なパラメーターを使用してサード パーティの Makefile を呼び出しています。ルールは次のようになります。
third_party_lib:
$(MAKE) -j 1 -C $@
これは希望どおりに機能しますが、make はこれに対して警告を発します。
make[1]: warning: -jN forced in submake: disabling jobserver mode.
これにより、1 つのサブ make で並列ジョブの数を制限するためのより良い方法があるかどうかをここで質問することになります。