私は、プリコンパイルされたヘッダー(stdafx.h)を使用するVisual Studio 2017 C++プロジェクトを持っています。次のようにVisual Studio 2017は不必要にstdafx.hを再コンパイルし続けますか?
マイ(簡体字)ファイル構造は次のとおりです。
header1.hpp
header2.hpp
stdafx.h -> includes header1.hpp
code1.cpp -> includes stdafx.h
code2.cpp -> includes stdafx.h and header2.hpp
includes header1.hpp
を言うことによって、任意のあいまいさを避けるために、私は、ファイル内の行#include <header1.hpp>
がある意味します。
私は
stdafx.h
を変更した後(予想通り)、3つのすべてのファイルstdafx.h
、code1.cpp
とcode2.cpp
が再コンパイルされています。code1.cpp
を変更した後は、code1.cpp
のみが(期待どおり)再コンパイルされます。私は
header2.cpp
を変更した後、3つのすべてのファイルstdafx.h
、code1.cpp
とcode2.cpp
は(が期待できない!)再コンパイルされています。
私は他のみcode2.cpp
はなく、すべてをコンパイルするアイテム3を期待しているだろう。
考えられる原因は、ビルドマネージャが#include
ディレクティブを調べたり追跡したりすることができないため、ヘッダーファイルが変更された場合にすべてを再コンパイルすることだけです。
私のプロジェクトはかなり大きいので、code1.cpp
のようなすべてのファイルを再コンパイルするとかなりの時間がかかります。私はheader2.hpp
をstdafx.h
から故意に入れていませんでした。なぜなら、header2.hpp
を頻繁に変更して、code2.cpp
だけを使用する必要があるからです。 (header2.hpp
は、テンプレートライブラリですcode2.cpp
が必要です)
この動作が予想され、Visual Studioで他のファイルを再コンパイルする必要がないことを認識させるにはどうすればよいですか?
予想される動作のようです - プリコンパイルされたヘッダーは、ヘッダーが変更されるたびに再コンパイルされます。 – Thebluefish
Visual Studioにプリコンパイル済みヘッダーを再コンパイルしないように指示する方法はありますか? – Bernard
シンプル - プリコンパイル済みヘッダーは使用しないでください。 – Thebluefish