VisualStudio проект с несколькими исходными файлами с тем же именем?

У меня большой проект C ++, с исходными файлами, организованными в несколько папок (в файловой системе).

в двух из этих папок у меня есть файлы с одинаковыми именами. например

\MyProject\foo\Blurp.cpp
\MyProject\foo\File.cpp
\MyProject\bar\File.cpp
\MyProject\bar\Knoll.cpp

проект кроссплатформенный, и я использую autoconf на linux и OSX, но должен использовать MSVC на W32 (из-за некоторых сторонних библиотек C ++, которые я использую на W32, и несовместимости двоичного интерфейса C ++ между компиляторами)

на стороне MSVC, проект организован в несколькоФильтры» (эти виртуальные папки) (с именами, примерно соответствующими каталогам, в которых находятся файлы), так что я могу их различать.

Теперь проблема в том, что когда я собираю проект, MSVC помещает объектные файлы в единую плоскую директорию, и я получаю:

\MyProject\Release\Blurp.obj
\MyProject\Release\File.obj
\MyProject\Release\Knoll.obj

как видно, тамтолько одинFile.obj, поэтому один двоичный объект отсутствует. очевидно, компоновщик жалуется, так как он не может найти классы / функции / ..., определенные в этом отсутствующем объектном файле.

Есть ли способ указать MSVC создавать объектные файлы с уникальным именем в зависимости от каталогов (или фильтров), в которых эти файлы живут?

я представляю что-то вроде:

\MyProject\Release\foo\Blurp.obj
\MyProject\Release\foo\File.obj
\MyProject\Release\bar\File.obj
\MyProject\Release\bar\Knoll.obj

или же

\MyProject\Release\foo-Blurp.obj
...

или что угодно. все другие известные мне системы сборки (CMake, autotools) могут работать с несколькими файлами с одинаковыми именами.

этот вопрос похож на3729515, но я'м в данный момент застрял на VS2008. (решение, предложенное там для VS2008 - установить Object-Directory для каждого рассматриваемого файла - это то, что действительно работает теоретически, но я бы хотел избежать по практическим соображениям)

Ответы на вопрос(2)

Ваш ответ на вопрос