gcc 4 と cmake を使用してコンパイル プロセスを管理する GNU/Linux 用のアプリケーションを開発しています。同じ名前のファイルが2つあるが、次のように他のディレクトリと名前空間にある場合、問題はないことがわかりました。
.
|-- gfx
| |-- Object.cpp
| `-- Object.h
`-- logic
|-- Object.cpp
`-- Object.h
最初の Object クラスは Gfx 名前空間にあり、2 番目は Logic 名前空間にあります。
次に、Visual C++ 2008 Express Edition を使用してこのプロジェクトをコンパイルしようとしました。リンカーは、Gfx::Object クラスの存在しない実装に関するいくつかのエラーをスローしました。いくつかのチェックの後、次のことがわかりました。
- Visual C++ は 2 つの Object.cpp ファイルを追跡しています
- 最初または 2 番目のファイルで変更が発生すると、オブジェクト ユニットの再コンパイルがキューに入れられます。
- 実際に変更されたファイルに関係なく、常に 2 番目の Object.cpp のみを再コンパイルします。
また、Visual C++ では同じ名前の 2 つのクラスを作成できないこともわかりました。
これに対する解決策はありますか?コードの大部分をリファクタリングしたくありません。