私はQtに基づく巨大なプロジェクトに取り組んでいます。これは、6コアのマシンでもコンパイルするのに数時間かかります。
これは、コアの1つだけを実行make
すると、ソースをコンパイルするためです。他のコアはアイドル状態のままです。
解決策は、私のマシンの6つのコアすべてを使用してmake
、-j
オプション(のようなもの)で実行することです。make -j6
これに伴う問題はmake
、再帰でスポーンしないことです。
例えば:
A、B、C、Dの4つのモジュールがあります。-DはA、B、Cに依存します。-BはAに依存します。-Cはシステムライブラリのみに依存します。-Aはシステムライブラリのみに依存します。
アプリは、上記qmake
の各モジュールのMakefileと、すべてのモジュールをコンパイルするための1つのMakefileを生成しました。
を実行するmake -j6
と、6つのジョブが1つずつコンパイルするのではなく、すべてのモジュールのコンパイルを開始します。モジュールDを他のモジュールに対してリンクする必要がある場合、それらのモジュールの準備ができておらず、not found
エラーがスローされる可能性があるため、この動作は問題です。
オプションでこの動作を変更することは可能make
ですか?これはソフトウェアエンジニアリングの問題かもしれません(モジュールはうまく投影されていません)?