summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2006-04-17 17:58:28 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2006-04-17 17:58:28 (GMT)
commit69488e5bd22a59cc7bf0f571f0c9aec9a1273c39 (patch)
treec81dc4eae58a94024b93057bee8733cb5097e13e /Source
parentc80faed7f690a48e995b09a46e3185d4de6bc720 (diff)
downloadCMake-69488e5bd22a59cc7bf0f571f0c9aec9a1273c39.zip
CMake-69488e5bd22a59cc7bf0f571f0c9aec9a1273c39.tar.gz
CMake-69488e5bd22a59cc7bf0f571f0c9aec9a1273c39.tar.bz2
ENH: allow multiple files with the same name in different subdirs
Diffstat (limited to 'Source')
-rw-r--r--Source/cmLocalVisualStudio7Generator.cxx21
1 files changed, 19 insertions, 2 deletions
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx
index dd47fa2..1f40847 100644
--- a/Source/cmLocalVisualStudio7Generator.cxx
+++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -973,7 +973,8 @@ void cmLocalVisualStudio7Generator::WriteVCProjFile(std::ostream& fout,
this->WriteVCProjFooter(fout);
}
-void cmLocalVisualStudio7Generator::WriteGroup(const cmSourceGroup *sg, cmTarget target, std::ostream &fout, const char *libName, std::vector<std::string> *configs)
+void cmLocalVisualStudio7Generator::WriteGroup(const cmSourceGroup *sg, cmTarget target,
+ std::ostream &fout, const char *libName, std::vector<std::string> *configs)
{
const std::vector<const cmSourceFile *> &sourceFiles =
sg->GetSourceFiles();
@@ -991,6 +992,7 @@ void cmLocalVisualStudio7Generator::WriteGroup(const cmSourceGroup *sg, cmTarget
}
// Loop through each source in the source group.
+ std::string sourceName;
for(std::vector<const cmSourceFile *>::const_iterator sf =
sourceFiles.begin(); sf != sourceFiles.end(); ++sf)
{
@@ -998,6 +1000,16 @@ void cmLocalVisualStudio7Generator::WriteGroup(const cmSourceGroup *sg, cmTarget
const cmCustomCommand *command = (*sf)->GetCustomCommand();
std::string compileFlags;
std::string additionalDeps;
+ sourceName = (*sf)->GetSourceName();
+ if(sourceName.find("/") != sourceName.npos)
+ {
+ cmSystemTools::ReplaceString(sourceName, "/", "_");
+ sourceName += ".obj";
+ }
+ else
+ {
+ sourceName = "";
+ }
// Add per-source flags.
const char* cflags = (*sf)->GetProperty("COMPILE_FLAGS");
@@ -1049,7 +1061,7 @@ void cmLocalVisualStudio7Generator::WriteGroup(const cmSourceGroup *sg, cmTarget
comment.c_str(), command->GetDepends(),
command->GetOutputs(), flags);
}
- else if(compileFlags.size() || additionalDeps.length())
+ else if(compileFlags.size() || additionalDeps.length() || sourceName.size())
{
const char* aCompilerTool = "VCCLCompilerTool";
std::string ext = (*sf)->GetSourceExtension();
@@ -1083,6 +1095,11 @@ void cmLocalVisualStudio7Generator::WriteGroup(const cmSourceGroup *sg, cmTarget
fout << "\t\t\t\t\tAdditionalDependencies=\""
<< additionalDeps.c_str() << "\"\n";
}
+ if(sourceName.size())
+ {
+ fout << "\t\t\t\t\tObjectFile=\"$(IntDir)/"
+ << sourceName.c_str() << "\"\n";
+ }
fout << "\t\t\t\t\t/>\n"
<< "\t\t\t\t</FileConfiguration>\n";
}