|
@@ -83,77 +83,50 @@ bool cmLocalVisualStudioGenerator::SourceFileCompiles(const cmSourceFile* sf)
|
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
-void cmLocalVisualStudioGenerator::CountObjectNames(
|
|
|
- const std::vector<cmSourceGroup>& groups,
|
|
|
- std::map<cmStdString, int>& counts)
|
|
|
+void
|
|
|
+cmLocalVisualStudioGenerator::ComputeObjectNameRequirements(
|
|
|
+ std::vector<cmSourceFile*> const& sources
|
|
|
+ )
|
|
|
{
|
|
|
- for(unsigned int i = 0; i < groups.size(); ++i)
|
|
|
+ // Clear the current set of requirements.
|
|
|
+ this->NeedObjectName.clear();
|
|
|
+
|
|
|
+ // Count the number of object files with each name. Note that
|
|
|
+ // windows file names are not case sensitive.
|
|
|
+ std::map<cmStdString, int> counts;
|
|
|
+ for(std::vector<cmSourceFile*>::const_iterator s = sources.begin();
|
|
|
+ s != sources.end(); ++s)
|
|
|
{
|
|
|
- cmSourceGroup sg = groups[i];
|
|
|
- std::vector<const cmSourceFile*> const& srcs = sg.GetSourceFiles();
|
|
|
- for(std::vector<const cmSourceFile*>::const_iterator s = srcs.begin();
|
|
|
- s != srcs.end(); ++s)
|
|
|
+ const cmSourceFile* sf = *s;
|
|
|
+ if(this->SourceFileCompiles(sf))
|
|
|
{
|
|
|
- const cmSourceFile* sf = *s;
|
|
|
- if(this->SourceFileCompiles(sf))
|
|
|
- {
|
|
|
- std::string objectName = cmSystemTools::LowerCase(
|
|
|
- cmSystemTools::GetFilenameWithoutLastExtension(
|
|
|
- sf->GetFullPath()));
|
|
|
- objectName += ".obj";
|
|
|
- counts[objectName] += 1;
|
|
|
- }
|
|
|
+ std::string objectName = cmSystemTools::LowerCase(
|
|
|
+ cmSystemTools::GetFilenameWithoutLastExtension(
|
|
|
+ sf->GetFullPath()));
|
|
|
+ objectName += ".obj";
|
|
|
+ counts[objectName] += 1;
|
|
|
}
|
|
|
- this->CountObjectNames(sg.GetGroupChildren(), counts);
|
|
|
}
|
|
|
-}
|
|
|
|
|
|
-//----------------------------------------------------------------------------
|
|
|
-void cmLocalVisualStudioGenerator::InsertNeedObjectNames(
|
|
|
- const std::vector<cmSourceGroup>& groups,
|
|
|
- std::map<cmStdString, int>& count)
|
|
|
-{
|
|
|
- for(unsigned int i = 0; i < groups.size(); ++i)
|
|
|
+ // For all source files producing duplicate names we need unique
|
|
|
+ // object name computation.
|
|
|
+ for(std::vector<cmSourceFile*>::const_iterator s = sources.begin();
|
|
|
+ s != sources.end(); ++s)
|
|
|
{
|
|
|
- cmSourceGroup sg = groups[i];
|
|
|
- std::vector<const cmSourceFile*> const& srcs = sg.GetSourceFiles();
|
|
|
- for(std::vector<const cmSourceFile*>::const_iterator s = srcs.begin();
|
|
|
- s != srcs.end(); ++s)
|
|
|
+ const cmSourceFile* sf = *s;
|
|
|
+ if(this->SourceFileCompiles(sf))
|
|
|
{
|
|
|
- const cmSourceFile* sf = *s;
|
|
|
- if(this->SourceFileCompiles(sf))
|
|
|
+ std::string objectName = cmSystemTools::LowerCase(
|
|
|
+ cmSystemTools::GetFilenameWithoutLastExtension(sf->GetFullPath()));
|
|
|
+ objectName += ".obj";
|
|
|
+ if(counts[objectName] > 1)
|
|
|
{
|
|
|
- std::string objectName = cmSystemTools::LowerCase(
|
|
|
- cmSystemTools::GetFilenameWithoutLastExtension(sf->GetFullPath()));
|
|
|
- objectName += ".obj";
|
|
|
- if(count[objectName] > 1)
|
|
|
- {
|
|
|
- this->NeedObjectName.insert(sf);
|
|
|
- }
|
|
|
+ this->NeedObjectName.insert(sf);
|
|
|
}
|
|
|
}
|
|
|
- this->InsertNeedObjectNames(sg.GetGroupChildren(), count);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-//----------------------------------------------------------------------------
|
|
|
-void cmLocalVisualStudioGenerator::ComputeObjectNameRequirements
|
|
|
-(std::vector<cmSourceGroup> const& sourceGroups)
|
|
|
-{
|
|
|
- // Clear the current set of requirements.
|
|
|
- this->NeedObjectName.clear();
|
|
|
-
|
|
|
- // Count the number of object files with each name. Note that
|
|
|
- // windows file names are not case sensitive.
|
|
|
- std::map<cmStdString, int> objectNameCounts;
|
|
|
- this->CountObjectNames(sourceGroups, objectNameCounts);
|
|
|
-
|
|
|
- // For all source files producing duplicate names we need unique
|
|
|
- // object name computation.
|
|
|
- this->InsertNeedObjectNames(sourceGroups, objectNameCounts);
|
|
|
-}
|
|
|
-
|
|
|
//----------------------------------------------------------------------------
|
|
|
const char* cmLocalVisualStudioGenerator::ReportErrorLabel() const
|
|
|
{
|