私は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ですか?これはソフトウェアエンジニアリングの問題かもしれません(モジュールはうまく投影されていません)?