5

誰かがこれをトラブルシューティングする方法を知っているかどうか興味があります。特定の .cpp ファイルがあり、何らかの理由で、それを変更して (空白文字を追加するだけでも) プロジェクトをビルドすると、他の無関係な .cpp ファイル (10 ~ 20 個) のホストが再コンパイルされます。

そのファイルは他のファイルに#includeされていません(.cppファイルを直接#includeすることはなく、.hのみです)、他に考えられる依存関係はありません-Visual Studioが依存関係ツリーを誤解しているように思えます、またはそのビルド プロセスに関連する破損した内部状態があります。.sdf、.suo、ipch/、.user、およびオブジェクト ファイル ディレクトリを削除しようとしましたが、しばらくすると問題が再発します。

他の .cpp ファイルを変更すると、予想どおり、そのファイルのみが再コンパイルされます。

私は MSBuild について少し知っていますが、.vxproj ファイルに明らかな問題はありません。問題の .cpp ファイルは ClCompile アイテム グループに 1 回だけ表示され、そのヘッダーは ClInclude グループに 1 回だけ表示されます。

これが何かの鐘を鳴らす場合、または誰かがこれを追跡してトラブルシューティングする方法についてのヒントを持っている場合は、大歓迎です!

アップデート:

私は実行しましmsbuild /verbosity:Detailedたが、残念ながら、無関係なファイルがコンパイルされる理由についての説明は、同様に不透明です:

Using "CL" task from assembly "Microsoft.Build.CppTasks.Common.v110, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
Task "CL"
Read Tracking Logs:
    Debug\cl.read.1.tlog
Output details (109 of them) were not logged for performance reasons.
{UnrelatedFile1.cpp} will be compiled as {PROBLEM_FILE.CPP} was modified at 4/30/2013 3:28:02 PM.
{UnrelatedFile2.cpp} will be compiled as {PROBLEM_FILE.CPP} was modified at 4/30/2013 3:28:02 PM.
(etc...)

これが誰にとっても理にかなっていれば、私に知らせてください - CLタスクの内部の仕組みや、これらの無関係なCPPファイル間の依存関係が見られる理由について多くの情報を見つけることができないようです.

4

2 に答える 2

0

私はまだこれを試していませんが、同様の質問で興味深い提案を見つけました: VS2010 は常にプロジェクトが古くなっていると考えていますが、何も変更されていません

于 2013-04-30T22:06:36.050 に答える