ENH: Adding .hh file as a C++ header file extension. Remove duplicate code from implementation of unique object name computation for VS generators. This addresses bug#3565.

This commit is contained in:
Brad King 2006-08-01 10:48:40 -04:00
parent c75fb61f3c
commit 8dda3a2f6e
3 changed files with 15 additions and 9 deletions

View File

@ -30,6 +30,14 @@ cmLocalVisualStudioGenerator::~cmLocalVisualStudioGenerator()
{
}
//----------------------------------------------------------------------------
bool cmLocalVisualStudioGenerator::SourceFileCompiles(const cmSourceFile* sf)
{
return (!sf->GetCustomCommand() &&
!sf->GetPropertyAsBool("HEADER_FILE_ONLY") &&
!sf->GetPropertyAsBool("EXTERNAL_OBJECT"));
}
//----------------------------------------------------------------------------
void cmLocalVisualStudioGenerator::ComputeObjectNameRequirements
(std::vector<cmSourceGroup> const& sourceGroups)
@ -46,14 +54,12 @@ void cmLocalVisualStudioGenerator::ComputeObjectNameRequirements
for(std::vector<const cmSourceFile*>::const_iterator s = srcs.begin();
s != srcs.end(); ++s)
{
const cmSourceFile& sf = *(*s);
if(!sf.GetCustomCommand() &&
!sf.GetPropertyAsBool("HEADER_FILE_ONLY") &&
!sf.GetPropertyAsBool("EXTERNAL_OBJECT"))
const cmSourceFile* sf = *s;
if(this->SourceFileCompiles(sf))
{
std::string objectName =
cmSystemTools::GetFilenameWithoutLastExtension(
sf.GetFullPath().c_str());
sf->GetFullPath().c_str());
objectName += ".obj";
objectNameCounts[objectName] += 1;
}
@ -70,9 +76,7 @@ void cmLocalVisualStudioGenerator::ComputeObjectNameRequirements
s != srcs.end(); ++s)
{
const cmSourceFile* sf = *s;
if(!sf->GetCustomCommand() &&
!sf->GetPropertyAsBool("HEADER_FILE_ONLY") &&
!sf->GetPropertyAsBool("EXTERNAL_OBJECT"))
if(this->SourceFileCompiles(sf))
{
std::string objectName =
cmSystemTools::GetFilenameWithoutLastExtension(

View File

@ -37,6 +37,7 @@ public:
protected:
// Safe object file name generation.
void ComputeObjectNameRequirements(std::vector<cmSourceGroup> const&);
bool SourceFileCompiles(const cmSourceFile* sf);
std::set<const cmSourceFile*> NeedObjectName;
};

View File

@ -63,6 +63,7 @@ cmMakefile::cmMakefile()
this->SourceFileExtensions.push_back( "mm" );
this->HeaderFileExtensions.push_back( "h" );
this->HeaderFileExtensions.push_back( "hh" );
this->HeaderFileExtensions.push_back( "h++" );
this->HeaderFileExtensions.push_back( "hm" );
this->HeaderFileExtensions.push_back( "hpp" );
@ -79,7 +80,7 @@ cmMakefile::cmMakefile()
("Source Files",
"\\.(C|M|c|c\\+\\+|cc|cpp|cxx|m|mm|rc|def|r|odl|idl|hpj|bat)$");
this->AddSourceGroup("Header Files",
"\\.(h|h\\+\\+|hm|hpp|hxx|in|txx|inl)$");
"\\.(h|hh|h\\+\\+|hm|hpp|hxx|in|txx|inl)$");
this->AddSourceGroup("CMake Rules", "\\.rule$");
this->AddSourceGroup("Resources", "\\.plist$");
#endif