0

Visual Studio 2012(バージョン11.0.50727.1)に2つのC++プロジェクトがあります。プロジェクトBは、プロジェクトプロパティ>共通プロパティ>フレームワークと参照を介してプロジェクトAに依存します。

Bで再構築を行うと、プロジェクトAのlibが出力ディレクトリに生成されないため、Bは失敗します。ログには、Aが正常にビルドされていることが示されていますが、libは表示されません。

本当に奇妙な部分は、「再構築」ではなく「クリーンしてから構築」を実行すると、すべてが正しく機能することです。同様に、プロジェクトAはそれ自体で正常にビルドされ、.libを生成します。残念ながら、私が使用しなければならないビルドシステムは「再構築」を行うことになり、可能であればそれを変更したくありません。

私が試したこと

フレームワーク参照を削除し、Bにリンカー依存関係としてlibを追加しようとしました。この場合、Aはまだビルドに失敗したため、参照が欠落していました。

私はしばらくの間SOとグーグルで検索しましたが、今のところ不足しています。

似たようなものに遭遇したことがある場合はお知らせください。

4

1 に答える 1

1

問題は、AとBが中間ディレクトリを共有していたことのようです。2つを区別することで、問題が解決したようです。

何が起こっているかについての私の推測は次のとおりです。

  1. Aは正しく構築されます。
  2. Bは「クリーン」を実行することから構築を開始します
  3. 中間ディレクトリの内容は、出力ディレクトリからクリーンアップする必要のあるファイルを決定するために使用されるため、A.libが誤って削除されます
  4. A.libが見つかりません

以前はプロジェクトの並列ビルドが有効になっていないため、これは以前のバージョンのVSで機能しました。したがって、すべてのプロジェクトが最初にクリーンアップされてからビルドされたと想定しています。

于 2012-12-14T15:02:11.107 に答える