14

昔、私はプリコンパイル済みヘッダーを使用していました。コンパイルを高速化するため、およびb。CodeWarrior、MPW、VS、ProjectBuilder、gcc、Intelコンパイラなどの複数の開発ツールをサポートしていたからです。

これで、32GBのRAMを搭載したMacProができました。

今はCMakeだけを使っています。

では、プリコンパイル済みヘッダーが本当に必要になるのでしょうか。

私が見たり知らなかったりする明らかな利点はありますか?

クロスプラットフォームのプリコンパイル済みヘッダーを作成するにはどうすればよいですか?多分それは私の人生も単純化するでしょう。

4

7 に答える 7

19

「十分に速い」ビルドなどというものはありません。TDD (テスト駆動開発) の支持者は、ビルドに数秒以上かかると、開発スタイルのターンアラウンドが大幅に遅くなるため、動揺します。

私は、コンパイル済みのヘッダーを適切な方法で使用することで、コンパイル時間を半分 (またはそれ以上) に短縮したプロジェクトに取り組んできました。そのため、しばらくの間ビルド時間を無視していたプロジェクトでは、特にメリットが非常に大きくなる可能性があります。

ただし、コードの物理的な依存関係を制御することにより、コンパイル時間がそれほど手に負えなくなることはありません。

詳細については、プリコンパイル済みヘッダーのケアとフィードを参照してください。

于 2009-07-16T15:16:50.887 に答える
4

あなたの質問は、コンパイルしているプロジェクトのサイズに本当に依存していると思います。プリコンパイル済みヘッダーが大きな違いを生む、非常に大きなプロジェクトがいくつかあります。

だから、私の答えは:それは依存します..

しかし、それらを使用するとなんらかの理由 (つまり、移植性) で人生が惨めになり、プロジェクトが信じられないほど大きくない場合..それらをスキップするといいでしょう。

于 2009-07-16T15:13:02.940 に答える
3

今日はそれを試してみることにしました。Microsoft Visual C++ 2010 を使用しています。

プリコンパイル済みヘッダーがない場合、合計コンパイル時間は 3.4 秒です。プリコンパイル済みヘッダーの場合、合計コンパイル時間は 1.5 秒です。だから私にとっては、それを使う価値があります。

プリコンパイル済みヘッダーには、boost ヘッダーと stl ヘッダー、および windows.h が多数含まれていました。生成されたプリコンパイル済みヘッダー ファイル (pch) ファイルの合計サイズは 49M バイトです。

于 2011-10-09T14:53:33.770 に答える
3

唯一の明白な利点は、コンパイル時間がわずかに短縮されることです。私は一般的にそれらを使用しません。私のプロジェクトのほとんどでは、コンパイル時間はそれほど悪くありません (たとえば、通常は数分未満です)。

あなたのプロジェクトが巨大でない限り、それらは通常、良いことよりも悪いことをします。(それらはコンパイラに大きく依存します。)

于 2009-07-16T15:15:31.297 に答える
0

プリコンパイル済みヘッダーの利点は、巨大なシステム ライブラリ ヘッダー ファイルや、まったく変更されない、またはほとんど変更されないその他のファイルを、ビルドごとに 1 回解析するだけで済むことです。

すべての C コンパイラ (私が知っている) はすべての .c ファイルで個別に動作するため、インクルードの「既知の」部分をスキップすると、コンパイル時間に大きな影響を与える可能性があります。

それらは移植性の問題でもありません。GCC で stdafx.h/cpp を使用してプロジェクトをコンパイルできます。唯一の問題は、すべてのコンパイル ユニットで stdafx.h のすべてが必要なわけではないため、コンパイル時間が長くなる可能性があることです。

于 2009-07-16T15:15:16.257 に答える
-1

少なくとも 2 つの理由から、プリコンパイル ヘッダーを使用することは依然として有用です
。1) 多くの人は 32 GB RAM の Mac Pro を持っていません。
2) *.h へ
のインクルードを制限する方法です。クロスプラットフォームのプリコンパイル済みヘッダーを作成する唯一の方法は、Qt とそのクロスプラットフォーム プロジェクト ファイル (PRO ファイル) を使用することです。

于 2009-07-16T15:16:20.110 に答える