- 締切済み
VS2010にて、依存関係とビルド順
2つのプロジェクトを内包するソリューソンがあるとします。 片方はDLLで、「a.dll」とします。 もう片方はEXEで、「b.exe」とします。 EXEは「a.dll」を使用していて、「a.lib」をリンクしています。 (プロジェクトのリンカーの追加の依存ファイルに「a.lib」を記述) 依存関係も設定し、ビルド順はDLL,EXEの順になっています。 それで、DLL側のソースを更新し、ビルドを行いました。 結果、「a.lib」と「a.dll」が更新されました。 しかし、EXE側はビルドされませんでした。(更新不要で省略された) 「a.lib」をリンクしているので「a.lib」が更新されれば、 少なくともEXE側もリンク(ビルド)する必要があるはずです。 このような場合どのように設定すれば良いのでしょうか? ちなみに、それぞれを1つソリューソンに分け、 DLL側をビルド、EXE側をビルドとした場合は、 EXE側はリンク(ビルド)されました。 また、Visual Studio 2008以前はこのような事はありませんでした。 Visual Studio 2010になって、この辺りの処理が変わったのでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- haniriito
- ベストアンサー率57% (12/21)
プロジェクトの依存関係を設定されましたか? >「a.lib」をリンクしているので「a.lib」が更新されれば、 >少なくともEXE側もリンク(ビルド)する必要があるはずです。 exe側のプロジェクトでa.libをリンクするように設定してあっても、それは単に「a.libをリンクする」ということを指示するだけであって、VisualStudioは勝手にexeも更新する必要があるとは考えません。 そのために、exe用のプロジェクトがa.lib用のプロジェクトに依存していることを「プロジェクトの依存関係設定」にて設定してください。 >また、Visual Studio 2008以前はこのような事はありませんでした。 >Visual Studio 2010になって、この辺りの処理が変わったのでしょうか? そのあたりは2008でも2010でも変わっていないと思いますよ。
お礼
回答ありがとうございます。 「プロジェクトの依存関係設定」を見直しました。 EXE側はDLL側に依存していて、ビルドの順番もDLL、EXEの順になっていました。 もしかして、ソリューションとEXEは同じドライブで、DLLが別のドライブに保存されているのが悪いのでしょうか?