2009-06-20 8 views
12

私は約60のC++ソースファイルを持つVisual Studioプロジェクトを持っています。私はビルドを行うことができ、それはエラーなしで完了する。しかし、すぐに再びF7を押すと、ソースファイルの約50がいつも再コンパイルされます。それは、すべてのファイルを再コンパイルするのではなく、奇妙です。Visual Studio 2008は常にプロジェクト全体を再ビルドしていますか?

「最小限の再構築を有効にする」(/ Gm)が設定されています。なぜそれがこれを行うかもしれない任意のアイデア? 今後、ファイルの変更日がありません。

+1

どのような言語ですか? C++? C#? VB? –

+0

申し訳ありません。これは主にC++であり、C言語のものもあります。 – Rocketmagnet

+2

"Solution/Clean"や "Rebuild All"を実行すると問題は解決しますか? 「最小限の再構築を有効にする」オプションをオフにすると消えますか? – ChrisW

答えて

8

今後のファイル日付はありますか?これは、タイムゾーンを変更した場合、またはシステム時刻を変更した場合に発生する可能性があります。将来の日付はIDEを混乱させ、F7またはF5がヒットするたびに強制的に再構築します。

+1

今後のソースファイルはありません。私はすべてのファイルをチェックしました。 – Rocketmagnet

+3

これはいつも私に起こったケースです。外部ソースからのヘッダーを含め、ファイルの日付を再確認してください! – Mehrdad

+0

これは何度も私に起こりましたが、これは決してありませんでした。 –

5

ほとんどの場合、依存関係があります。

次の可能性を検討:カスタム出力特性は、右のファイル名(複数可)が含まれていることを確認し、ソリューション内のファイルのいくつかのために定義されたツールを構築している場合は

  • を。ビルド・ツールの出力が出力ファイル名で指定されたものと一致しない場合、ビルダーはそのファイルを再構築します。

  • カスタムビルドイベントがある場合は、ビルドイベントの出力が、ビルドするファイルの依存関係に影響しないかどうかを確認します。

  • ポストビルド時に、出力ファイルの一部をビルドフォルダにコピーまたは移動しようとすると、問題が発生しました。ビルドプロセスの出力ファイルのタイムスタンプに影響を与えるポストビルド操作は、毎回再構築を決定します。それが再構築した後、ソースファイルは、後に実行可能なよりはまだです:

+0

カスタムビルドイベントがありません。すべてはライブラリとのコンパイルとリンクです。 – Rocketmagnet

2

理由があれば、ソースファイルのいずれかの「日付最後に変更は」将来的には、いくつかの日付に設定されています。

この問題は、ソースファイルがリモートマシン(ネットワーク共有)のディレクトリにある場合、またはマシンの時刻がマシンの日付と同期していない場合に発生する可能性がありますソースバージョン管理システムのサーバーを実行しています。

+0

未来のソースファイルはありません。すべてのファイルはローカルマシン上にあります。 – Rocketmagnet

3

私は同じ問題を抱えています。ブラウズ情報をオフにしているためです。プロパティ - > C/C++ - >情報の参照 - >情報の参照を有効にする - >なし私が見つけた唯一の修正は、それを元に戻すことです。これはxbox 360プロジェクト用ですが、私の他のプロジェクトには問題はありません。

3

この問題は多くのことが原因で発生することができているようですが、何私のためにそれを固定することだった:

  1. 手動すべてbinobjフォルダを削除Visual Studioの
  2. を閉じる(クリーンにはありません
  3. 解決策を開いてクリーンで実行する(これが必要かどうかわかりませんが、ちょうどいいですが...)
  4. 通常のように構築

注:Visual Studio 2010のC#プログラム用です。

0

似たような症状を引き起こした原因は次のとおりです。 解決策にはいくつかのプロジェクトがあります。 > 1個のプロジェクトによって参照された(したがってコンパイルされた).cppファイルがありました。残念ながら、Visual Studioは非常に単純な名前で.objファイルを作成します。単に ".obj"で ".cpp"を置き換えます。異なる名前のラッパー.cpp-sを作成すると、問題が解決しました。

0

私は何か類似していました。私はビルド前とビルド後のイベントを持っていましたが、問題を引き起こしていませんでした。それは、「新しいコピー」ではなく「常にコピーする」とマークされたコンテンツファイルを持つ参照チェーンの下で、これらのプロジェクトが常に「古くなった」とみなされたという意味の数多くのプロジェクトがあることが判明しました。これらのすべてを「新しいものをコピーする」に変更することで、私の単体テストプロジェクトの変更により、他のすべてのプロジェクトの再コンパイルが強制されなくなりました。

4

私の場合(VS2005経由のC++)リリース設定のみで、スタジオは/ Ziオプションが設定されていないと、コンパイラオプション/ Gmは無視されます。経由/紫を設定した後

構成プロパティ - > C/C++ - >一般 - >デバッグ情報の形式:プログラムデータベース(/ Zi)、

が、それはOKでした。 Release ConfigurationにDebuggingについて何か必要があるとき、何か間違ったことはありませんか?まだ私には明らかではない!

+0

これは私の問題でした。結局、リリースプロジェクトでデバッグ情報(/ Zi)を誤って切ってしまったことがあります。 –

+0

ProgramDatabase名の空の文字列が必要か、データベースを生成する必要があるようです。ビルドの出力を診断レベルに設定すると、次のメッセージが表示されます。タスク「削除」がスキップされました。 ( 'ProgramDatabase'!= ''および 'ProgramDatabase'!= 'OldStyle'および 'ARM \ Release \ vc110.pdb'!= ''および!Exists(ARM \ Release \ vc110.pdb))。 –

3

Google検索の数日後、私は私の問題の解決策に終わった。

プロジェクトを新しいPCに移動したときにこの問題が発生しました。ファイルの作成日を数回確認しました。これらの日付は最新のものでしたが、ファイルを変更したときでさえ、修正日はバスト(ちょっと奇妙なもの)でした。

ファイルを単純に更新すると、問題が解決されました。

1

プロジェクトに、ディスク上に存在しない.hヘッダーファイルが含まれていることを確認します。私が実際にどこにも含まれていないヘッダーファイルを削除すると、私はいつも私に起こりますが、VSのソリューションナビゲータから削除することを忘れてしまいます。注:ヘッダーが見つからない場合、ビルド中にエラーは発生しません(どこにも#が含まれていない場合)。

1

プロジェクトのプログラムデータベースのファイル名を確認してください。何らかの理由で、これがディレクトリの名前("$(IntDir)\"など)に設定されていると、PDBファイルを生成していない場合でも、VSが毎回プロジェクトを再構築することがあります(つまり、Debug Information Formatが "無効にする)。

これはVS2008のバグです。私はまだVS2010でそれを再現していませんが、テストは徹底していないので、VS2010にその動作が存在しないとは確信していません。

0

"最小限の再構築"(設定プロパティ> C/C++>コード生成)を無効にすると、私のために修正されました。コンパイラはさらにヒントを残しました:

1> cl:コマンドラインの警告D9007: '/ Gm'には '/ Ziまたは/ ZI'が必要です。オプションは無視されました

私は指摘しなければならないが、コンパイラはそれが言ったようにオプションを無視しなかった。

7

私は同じ問題を解決しました。

コンパイラが警告を表示した場合、/ Gmが指定されている場合は/ Ziオプションが必要です。

/Gmでは、.pdbファイルにデバッグ情報が必要な「最小再構築」が有効になります。したがって、.pdbを使用したくない場合は、minum rebuildも無効にしてください。私の場合は問題が解決しました。

4

プロジェクトプロパティ - > "C/C++" - > "出力ファイル" - > "プログラムデータベースファイル名"オプションは空であってはいけません。ドロップダウンから選択してこのオプションを設定します。オプションは$(IntDir)\ vc90.pdbのように設定されます。 "ProgramDataBaseFileName ="行はvcprojファイルから削除されます。

変更された* .cppファイルのみが、プロジェクトまたはソリューションをビルドするときに再コンパイルされます。

0

私のケースでは、システムデータの時刻を前の日付に変更したため、一度変更したファイルのタイムスタンプが変わるたびに再構築されます。

0

ここでは定期的にことがあります。

  • が手ですべての中間ファイルおよび出力ファイルを削除します。 vstudioのクリーンオプションでは不十分な場合があります。新鮮なスタートから完全なビルドを行います。 vstudioが完全なビルド後にも特定のファイルを再コンパイルしたい場合は、次の箇条書きに関連する可能性があります。
  • vcxprojでディスク上にないヘッダーファイルが参照されている場合、プロジェクトも再コンパイルされます。これをMSDNのブログに記載されている隠し機能で確認するか、プロジェクトエクスプローラーのすべてのヘッダーファイルをタッチするだけで開くことができます。
0

同じ問題があります。解決:(OBJ、exeファイルは、すべてのファイル)ファイルをリセット -run cygwinの -cdプロジェクトフォルダ -run "タッチ*" は、日付/時刻を変更 -buildと問題が修正楽しむ -delete出力フォルダ

0

プロジェクトの再構築にも同様の問題があります。 Visual Studioは再コンパイルしませんが、F7を押すたびにプロジェクトを再リンクします。

修正が簡単です。エディタでプロジェクトに含まれるすべてのファイルを開き(ソリューションエクスプローラから各ファイルをダブルクリックして)、存在しないファイルをソリューションから削除します。

関連する問題