1

OK、Mac および Windows 用の古い Metrowerks コードがあります。以前の開発者は、このコード ベースがビルドするすべてのプロジェクトにコンパイル済みのヘッダーを使用していました。

概念的に、プリコンパイル済みヘッダーをどのように取り除くのですか?

.pch の内容を取得して core.h に移動し、それをすべてのクラスの .h ファイルに含めますか?

CMAKE でのビルドに移行したいのですが、プリコンパイル済みヘッダーを機能させるためのハックがありますが、それらへの依存関係を削除するのが最善だと思います。

コンパイル速度について言う人もいるかもしれませんが、私はレースに参加していません。すでに高速な機器を持っています。プリコンパイル済みヘッダーから逃れる方法に興味があります。

4

2 に答える 2

1

概念的には、プリコンパイル済みヘッダーをどのように取り除くのですか?

プリコンパイル済みヘッダーは最適化です。概念的には、代わりに通常のヘッダーを使用するだけで、プリコンパイル済みヘッダーを取り除くことができます。

.pchの内容を取得してcore.hに移動し、それをすべてのクラスの.hファイルに含めますか?

私はこれを行うプログラマーを知っています。個人的には、使用している関数とその由来を知りたいので、各ファイルに、#includeそのファイルのコンパイルに必要なすべてのヘッダー(およびそのファイルのコンパイルに必要なヘッダーのみ)があることを確認します。繰り返しになりますが、これにはヘッダーが不要になったかどうかを常に確認する必要があります。

于 2009-11-14T07:55:14.797 に答える
1

そこにいた... C ++プロジェクトでは、中央ヘッダーが絶対にすべての翻訳単位に含まれており、そこにあるほぼすべてのBoostヘッダーが含まれていました。PCH がサポートされているプラ​​ットフォームでは問題ありませんが、サポートされていないプラットフォームではコンパイルに時間がかかりました。(あなたのcore.hアプローチのように。特にC ++ではそうしないでください。)

だから、ここに行きます:

  • PCH のすべてのインクルージョンを grep し、それらを放り投げます (または、より穏やかにコメントアウトします)。
  • 翻訳単位ごとにビルドを試み、コンパイラ エラーが発生しなくなるまで不足しているインクルードを追加します。

うん、それはブルート フォース アプローチです。残念ながら、私はよく知りません。

于 2011-06-06T14:32:50.847 に答える