web-dev-qa-db-ja.com

Qtの構築:「ma​​keclean」はすべてを再コンパイルしますか?

(これはQtバージョン> = 4.7.3に適用されます。)Debianボックスでカスタムパラメーターを使用してQtをビルドしようとしましたが、実際にコンパイルにAGESがかかりました(IIRCは6時間以上)シングルコアCPU)。だから私はその過程で愚かな間違いをしないようにしたかったのです。ただし、リンクが成功した後、_make clean_ファイルやその他のものをクリーンアップするために_*.o_を実行することを選択しました。それは悪い考えのようでした!私はその直後に_make install_を実行しましたが、信じられないかもしれませんが、_make clean_の試行により、すべてが取得されましたクリーンアッププロセス後に再コンパイルされました!これまで、_make clean_を使用すると、すべてのオブジェクトファイルや関連するものを削除しても、きちんとインストールできると思っていました。明らかに、Qtでは、状況が異なります。

_Qt 4.7_の公式ドキュメント(cf. http://qt-project.org/doc/qt-4.7/install-x11.html )では、optional_make clean_コマンドのシーケンス。私が今知っているように、正当な理由があります。それでも、私はすでに何百ものオープンソースアプリをコンパイルしているので、これを「標準に準拠している」とは言えません。また、_make clean_が再コンパイルプロセスをトリガーしたり、保持する必要のあるものを削除したりしたことはありません(そこにバグがありました)

1
syntaxerror

make cleanの前にmake installを実行することが、どういうわけかあなたがすべきことであるという考えをどこで得たのかわかりません。

Autotoolsの正規のINSTALLファイルは、プロセスを詳しく説明しています。

  1. ./configure
  2. make
  3. make check(オプション)
  4. make install
  5. make installcheck(オプション)

項目6には、次のように書かれています。

make cleanと入力すると、ソースコードディレクトリからプログラムバイナリおよびオブジェクトファイルを削除できます。

(エンファシス鉱山。)

make cleanは、再コンパイルする前に行うことで、クリーンなビルドを取得し、以前の実行からの副産物が残っていないことを確認します。スペースを解放したいがソースと構成を維持したい場合は、aftermake installで実行できます。インストールする前にしてはいけません

7
Mat

Qtビルドスクリプトは次のように機能します。

1 First build qmake
2 Generate Makefile for a subprojects (*.pro)
3 Start building libaries, then examples and demo projects

はい、make cleanは、Qtによって生成された設定ファイル以外のすべてをクリーンアップします。

私のトリックは、一番上の* .proファイルの「デモ」と「例」を削除することです。これにより、約40%の時間を節約できます(i5 CPUの場合)。

とにかく、コンパイルを高速化するためにccacheをセットアップすることもできますが、それはバッファリングのために約2G以上のディスクスペースを必要とします

1
daisy