Detect whether the current Eclipse version supports VirtualFolders

VirtualFolders are supported since 3.6 (Helios).
Next patch will be to actually make use of the new flag
SupportsVirtualFolders.

Alex
This commit is contained in:
Alex Neundorf 2011-10-15 19:40:21 +02:00
parent 4974ec90a4
commit 5b200e3bed
2 changed files with 21 additions and 0 deletions

View File

@ -34,6 +34,8 @@ cmExtraEclipseCDT4Generator
// this->SupportedGlobalGenerators.push_back("MSYS Makefiles"); // this->SupportedGlobalGenerators.push_back("MSYS Makefiles");
#endif #endif
this->SupportedGlobalGenerators.push_back("Unix Makefiles"); this->SupportedGlobalGenerators.push_back("Unix Makefiles");
this->SupportsVirtualFolders = true;
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@ -57,6 +59,24 @@ void cmExtraEclipseCDT4Generator::Generate()
const cmMakefile* mf const cmMakefile* mf
= this->GlobalGenerator->GetLocalGenerators()[0]->GetMakefile(); = this->GlobalGenerator->GetLocalGenerators()[0]->GetMakefile();
std::string eclipseVersion = mf->GetSafeDefinition("CMAKE_ECLIPSE_VERSION");
cmsys::RegularExpression regex(".*([0-9]+\\.[0-9]+).*");
if (regex.find(eclipseVersion.c_str()))
{
unsigned int majorVersion = 0;
unsigned int minorVersion = 0;
int res=sscanf(regex.match(1).c_str(), "%u.%u", &majorVersion,
&minorVersion);
if (res == 2)
{
int version = majorVersion * 1000 + minorVersion;
if (version < 3006) // 3.6 is Helios
{
this->SupportsVirtualFolders = false;
}
}
}
// TODO: Decide if these are local or member variables // TODO: Decide if these are local or member variables
this->HomeDirectory = mf->GetHomeDirectory(); this->HomeDirectory = mf->GetHomeDirectory();
this->HomeOutputDirectory = mf->GetHomeOutputDirectory(); this->HomeOutputDirectory = mf->GetHomeOutputDirectory();

View File

@ -107,6 +107,7 @@ private:
std::string HomeOutputDirectory; std::string HomeOutputDirectory;
bool IsOutOfSourceBuild; bool IsOutOfSourceBuild;
bool GenerateSourceProject; bool GenerateSourceProject;
bool SupportsVirtualFolders;
}; };