Android用QtCreator/w Qt 5.6を使用して大きなプロジェクト(〜40ライブラリと1実行ファイル)をコンパイルしています。 QtCreatorは "mingw492_32 \ bin \ mingw32-make.exe"を使用してビルドを操作します。mingw32-make `-j`オプションが壊れていますか?
デフォルトのオプションでコンパイルすると、すべてのプロジェクトが正常にコンパイルされます。
QtCreatorプロジェクト設定内で-j4
または-j8
~mingw32-make.exe
コマンドを追加すると、ビルドが高速になりますが、ランダムに失敗します。ある時点で、ライブラリB
はA
とリンクしていますが、A
のコンパイルがまだ完了していないので、B
をリンクしようとしていますので、cannot open ..../libA.so
と報告しています。
なお:
A
とB
リンクはB
が表示されますB
の.PROファイルにLIBS += -l$$OUT_PWD/../../lib/A/libA.so
によって管理されているという事実(SUBDIRS += A.pro B.pro
)
A
後
makeは、残念ながら、並列ビルドを行うときに依存関係を処理することができません。つまり、まだ構築されていないものに依存するものを構築しようとする可能性があります。 –
@Someprogrammerdude:しかし、QtCreatorはMakeを呼び出すものですが、それをサポートしてはいけませんか? – jpo38
QtCreatorはデフォルトでフラグを設定しないので、QtCreatorによって作成されたmakefileが並列ビルドをうまく処理するように設定されていない可能性があります。 –