2

2 つのファイルがあるとします。

  • A.h
  • A.cppA.cpp含むA.h

ヘッダーをプリコンパイルしA.h.gchて削除しますA.h

2つのファイルを持つ:

  • A.cpp
  • A.h.gch

g++ を使用して、最終製品をどのようにコンパイルしますか?

私の場合、ファイルがどこにも見つからないg++と不平を言っています。.h

4

2 に答える 2

1

gch が古いかどうかを確認するために、g++ がヘッダーの日付をチェックすると仮定しました。驚いたことに、そうではありません。ヘッダーを変更して名前を変更しても、cpp をコンパイルできます。

特定のパラメーターが gch が作成されたときと異なる場合、コンパイルは失敗します。したがって、 GCC プリコンパイル済みヘッダー ドキュメントに記載されている条件の少なくとも 1 つが満たされていないため、コンパイルが失敗したと思います。

異なるコンパイル構成を頻繁に切り替える場合は、そのドキュメントで説明されているように、構成ごとに pch を含むディレクトリを使用できます。

pch が使用されていることを確認したいだけの場合は、-Winvalid-pchオプションを使用し、ヘッダーを変更するたびに必ず pch を更新してください。

于 2012-08-29T22:52:38.560 に答える
1

私は専門家ではありませんが、ウィキペディアから:

GCC は、ヘッダーがコンパイルされたときと同じコンパイラ スイッチが設定されている場合にのみ、プリコンパイルされたバージョンを使用でき、多くても 1 つしか使用できません。

私はもう試した:

g++ a.h
rm a.h
g++ -c a.cpp

g++ がそれを使用しているかどうかを確認できます:

g++ -H -c a.cpp

! a.h.gch
a.cpp
于 2012-08-29T22:43:25.447 に答える