From 5b200e3bed8e450027ddad42a155d670f247e58c Mon Sep 17 00:00:00 2001 From: Alex Neundorf Date: Sat, 15 Oct 2011 19:40:21 +0200 Subject: 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 --- Source/cmExtraEclipseCDT4Generator.cxx | 20 ++++++++++++++++++++ Source/cmExtraEclipseCDT4Generator.h | 1 + 2 files changed, 21 insertions(+) diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx index 7beffdc..21b1b61 100644 --- a/Source/cmExtraEclipseCDT4Generator.cxx +++ b/Source/cmExtraEclipseCDT4Generator.cxx @@ -34,6 +34,8 @@ cmExtraEclipseCDT4Generator // this->SupportedGlobalGenerators.push_back("MSYS Makefiles"); #endif this->SupportedGlobalGenerators.push_back("Unix Makefiles"); + + this->SupportsVirtualFolders = true; } //---------------------------------------------------------------------------- @@ -57,6 +59,24 @@ void cmExtraEclipseCDT4Generator::Generate() const cmMakefile* mf = 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 this->HomeDirectory = mf->GetHomeDirectory(); this->HomeOutputDirectory = mf->GetHomeOutputDirectory(); diff --git a/Source/cmExtraEclipseCDT4Generator.h b/Source/cmExtraEclipseCDT4Generator.h index a683731..b866619 100644 --- a/Source/cmExtraEclipseCDT4Generator.h +++ b/Source/cmExtraEclipseCDT4Generator.h @@ -107,6 +107,7 @@ private: std::string HomeOutputDirectory; bool IsOutOfSourceBuild; bool GenerateSourceProject; + bool SupportsVirtualFolders; }; -- cgit v0.12