2 つのファイルがあるとします。
- A.hと
- A.cpp、- A.cpp含む- A.h
ヘッダーをプリコンパイルしA.h.gchて削除しますA.h
2つのファイルを持つ:
- A.cppと
- A.h.gch、
g++ を使用して、最終製品をどのようにコンパイルしますか?
私の場合、ファイルがどこにも見つからないg++と不平を言っています。.h
2 つのファイルがあるとします。
A.hとA.cpp、A.cpp含むA.hヘッダーをプリコンパイルしA.h.gchて削除しますA.h
2つのファイルを持つ:
A.cppとA.h.gch、g++ を使用して、最終製品をどのようにコンパイルしますか?
私の場合、ファイルがどこにも見つからないg++と不平を言っています。.h
gch が古いかどうかを確認するために、g++ がヘッダーの日付をチェックすると仮定しました。驚いたことに、そうではありません。ヘッダーを変更して名前を変更しても、cpp をコンパイルできます。
特定のパラメーターが gch が作成されたときと異なる場合、コンパイルは失敗します。したがって、 GCC プリコンパイル済みヘッダー ドキュメントに記載されている条件の少なくとも 1 つが満たされていないため、コンパイルが失敗したと思います。
異なるコンパイル構成を頻繁に切り替える場合は、そのドキュメントで説明されているように、構成ごとに pch を含むディレクトリを使用できます。
pch が使用されていることを確認したいだけの場合は、-Winvalid-pchオプションを使用し、ヘッダーを変更するたびに必ず pch を更新してください。
私は専門家ではありませんが、ウィキペディアから:
GCC は、ヘッダーがコンパイルされたときと同じコンパイラ スイッチが設定されている場合にのみ、プリコンパイルされたバージョンを使用でき、多くても 1 つしか使用できません。
私はもう試した:
g++ a.h
rm a.h
g++ -c a.cpp
g++ がそれを使用しているかどうかを確認できます:
g++ -H -c a.cpp
! a.h.gch
a.cpp