libFoo
ライブラリプロジェクトと実行可能プロジェクトを備えたVisualStudioソリューションがあります。Bar
これはに依存しlibFoo
ます。
たとえば、変更libFoo/bar.cpp
してビルドしようとするとlibFoo
、Visual Studioはbar.cppファイルをコンパイルしますが、ライブラリlibFoo.lib
は既に最新であると言って再生成しません。
システム時計を確認しました。また、ファイルの変更時刻bar.obj
が実際に更新されていること、およびライブラリがobjよりも古いことを確認しました。ただし、それでもライブラリは再作成されません。
実際のソリューションは、実際には約100のプロジェクトで構成されており、それらの一部はライブラリであり、一部は実行可能ファイルです。この問題は、私のチームメンバーの3人のコンピューターで発生します。残りは影響を受けません。なぜそれが起こるのか、そしてそれをどのように修正するのか私たちは知りません...またはそれが他のチームメンバーに起こるかもしれない天気。
ライブラリとそれに依存する実行可能ファイルを使用して独自の小さなソリューションを作成しても、それを再現することはできませんでした。したがって、これは環境問題とソリューション/プロジェクトファイルの問題の組み合わせであると私は信じています。
ありがとう、アレックス。
編集
このソリューションは、Visual Studio 2010で作成され、VS2012の使用を開始するまで、過去数年間VS2010で開発されました。この問題は、VS2010とVS2012の両方がインストールされているユーザーで発生します。このソリューションは現在VS2012ソリューションであり、プロジェクトはVS2010プラットフォームツールキットを使用しています。
VS2012の使用を開始したとき、チームはソリューションを移行しましたが、すべてのC ++プロジェクトの「プラットフォームツールキット」をVS2010のもののままにして、コードとVS2010を使用している他のチームとの互換性を確保しました。
グーグルはもっともらしい解決策を明らかにしなかった。それは他の人々も同様の問題に遭遇したという事実を明らかにしましたが。