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