複数のスタティックライブラリプロジェクトと1つの実行ファイルプロジェクトを統合したソリューションで、たまに、実行ファイルプロジェクトの1つのファイルを更新しただけで、すべてのプロジェクトがビルドされる現象が発生します
ファイルの依存関係から考えるとあり得ないはずなのですが、環境としては以下のような運用です
1. VMWare Workstation に Windows 10 FallCreatorsUpdate がインストールされている
2. Visual Studio 2015 Update 3 がインストールされている
3. ファイルの変更が入るのは1~2か月に1度くらいの頻度で、その間はほとんど VM はスリープかシャットダウンされている
感覚としては、1ヶ月の間に何度か更新がかかる場合(多くは不具合修正)はこんなことはあまり起こらない気がしていますが、どうも1ヶ月以上はほったらかした後だと起こりやすい気がしています
起こるたびに、ターゲットオブジェクトより新しいオブジェクトを探すのですが、見つかりません
再ビルドがかかるプロジェクトは、変更したファイルとは無関係なので、単にリンクだけが走り、オブジェクトのバイナリを調べるとタイムスタンプだけが更新されている状況です
ただ、ライブラリプロジェクトは数が多いため、リンクだけでも結構時間がかかり、総ビルド時間がかなりもったいない現象になっています
※本来ならEXE1つがコンパイルリンクで済むはずなのでおよそ10倍程度は時間がかかっている感じです
念のために、変更されるファイルはヘッダとかではなく、他のライブラリプロジェクトとは全く無関係のソース(実装)ファイルです(だから、リンクしか走らないのでしょうけども)
単純にはビルド時間を減らしたいのですが、もっと深刻なのは、バイナリが違ってしまうということで、本当に機能的な違いがないのかどうかを毎回バイナリレベルでチェックしないといけないということです(実際、単純に古いオブジェクトと比較してみてもタイムスタンプ情報しか違わないので、無視しても大丈夫かもしれないですが)
以前も同様の現象で質問してみた際、デバッグファイルが壊れている、みたいなことを言われたことがありますが、該当するライブラリすべてのデバッグファイルが壊れているというのも納得がいきません(1つか2つなら、まあしょうがないで済みますが、すべてのプロジェクトで起こるので、仮にデバッグファイルが直接の原因だったとしても、根本的な要因がありそうです)
こうした現象に何か心当たりのある方はいらっしゃらないでしょうか?