我正在使用 gcc 4 和 cmake 为 GNU/Linux 开发应用程序来管理编译过程。我发现当有两个同名但在其他目录和命名空间中的文件时没有问题,如下所示:
.
|-- gfx
| |-- Object.cpp
| `-- Object.h
`-- logic
|-- Object.cpp
`-- Object.h
第一个 Object 类在 Gfx 命名空间中,第二个在 Logic 命名空间中。
然后我尝试使用 Visual C++ 2008 Express Edition 编译这个项目。链接器抛出了几个关于 Gfx::Object 类的不存在实现的错误。经过几次检查,我发现:
- Visual C++ 正在跟踪两个 Object.cpp 文件
- 当第一个或第二个文件发生更改时,对象单元的重新编译将排队
- 无论实际修改了哪个文件,它总是只重新编译第二个 Object.cpp
我还发现 Visual C++ 不允许创建两个具有相同名称的类。
有解决方案吗?我真的不想重构相当大的一部分代码。