相关疑难解决方法(0)

具有多个同名源文件的VisualStudio项目?

我有一个大的C++项目,源文件组织在多个文件夹中(在文件系统上).

在其中两个文件夹中,我有相同名称的文件.例如

\MyProject\foo\Blurp.cpp
\MyProject\foo\File.cpp
\MyProject\bar\File.cpp
\MyProject\bar\Knoll.cpp
Run Code Online (Sandbox Code Playgroud)

该项目是跨平台的,我在linux和OSX上使用autoconf,但必须在W32上使用MSVC(由于我在W32上使用的一些第三方C++库和C++二进制接口在编译器之间不兼容)

在MSVC方面,项目也被组织成多个"过滤器"(那些虚拟文件夹)(名称大致对应于文件所在的目录),所以我可以区分它们.

现在问题是,当我构建项目时,MSVC将目标文件放在一个单独的平面中,我最终得到:

\MyProject\Release\Blurp.obj
\MyProject\Release\File.obj
\MyProject\Release\Knoll.obj
Run Code Online (Sandbox Code Playgroud)

可以看出,只有一个File.obj,所以缺少一个二进制对象.显然,链接器会抱怨,因为它找不到那个缺少的对象文件中定义的类/函数/ ...

有没有办法告诉MSVC创建具有唯一名称的目标文件,具体取决于这些文件所在的目录(或过滤器)?

我想象的是:

\MyProject\Release\foo\Blurp.obj
\MyProject\Release\foo\File.obj
\MyProject\Release\bar\File.obj
\MyProject\Release\bar\Knoll.obj
Run Code Online (Sandbox Code Playgroud)

要么

\MyProject\Release\foo-Blurp.obj
...
Run Code Online (Sandbox Code Playgroud)

管他呢.我所知道的所有其他构建系统(CMake,autotools)都能够处理多个同名文件.

这个问题类似于3729515,但我现在仍然坚持VS2008.(针对VS2008建议的解决方案 - 为每个有问题的文件设置对象目录 - 这在理论上确实有效,但出于实际原因我想避免这种情况)

filenames visual-studio-2008 visual-c++

10
推荐指数
2
解决办法
7217
查看次数

标签 统计

filenames ×1

visual-c++ ×1

visual-studio-2008 ×1