Щелкните правой кнопкой мыши оба / любой из .cpp файлов> properties
> C/C++
> Output Files
> Object File Name
> и задайте произвольное имя. например если оба файла имеют имя MyFile.cpp
в папке A
, а другой - в папке B
, вы можете установить выходные значения AMyFile
и BMyFile
.
В качестве альтернативы вы также можете использовать макрос для добавления префикса к имени объекта с непосредственным именем родительской папки (т. Е. С использованием $(IntDir)\$(SafeParentName)$(SafeInputName)
). Если этого недостаточно (например, у вас есть A/B/MyFile.cpp
и C/B/MyFile.cpp
), и вы не возражаете против того, чтобы некоторые объектные файлы загромождали ваше исходное дерево, вы также можете использовать $(InputDir)\
, который поместит объектные файлы в ту же папку, что и исходный файл.
файлы cpp будут скомпилированы в два разных объектных файла ..
наслаждаться!
Обновление для VS2010: В VS2010 есть лучшее решение, посмотрите здесь . Благодарю n1ck комментарий
Кстати, если содержимое имеет одно и то же имя, вы разделяете их, используя разные пространства имен?
namespace A { // in folder A
class CMyFile {};
};
namespace B{ // in folder B
class CMyFile {};
};
// client.cpp
#include "A/MyFile.h"
#include "B/MyFile.h"
int main() {
A::CMyFile aMyFile;
B::CMyFile bMyFile;
return 0;
}
Я не знаю, имеет ли это значение, но оно определенно яснее для человека: D