diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2016-07-20 16:28:39 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-08-03 13:43:00 (GMT) |
commit | a354f60ce07cd67bd60161824a4e74bf9068fea4 (patch) | |
tree | 14c272760205567469ddd856a99e98ace6282841 /Source/cmExtraEclipseCDT4Generator.cxx | |
parent | fd59f9ad519c1c311c54569133797d9061e90558 (diff) | |
download | CMake-a354f60ce07cd67bd60161824a4e74bf9068fea4.zip CMake-a354f60ce07cd67bd60161824a4e74bf9068fea4.tar.gz CMake-a354f60ce07cd67bd60161824a4e74bf9068fea4.tar.bz2 |
Refactor extra generator registration to use factories
This will allow additional information about the availability
and capabilities of extra generators to be queried without
actually creating them.
Instead of a static NewFactory() method like the main generator
factories have, use a static GetFactory() method to get a pointer to a
statically allocated extra generator factory. This simplifies memory
management.
Diffstat (limited to 'Source/cmExtraEclipseCDT4Generator.cxx')
-rw-r--r-- | Source/cmExtraEclipseCDT4Generator.cxx | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx index 93c55cc..8091bcf 100644 --- a/Source/cmExtraEclipseCDT4Generator.cxx +++ b/Source/cmExtraEclipseCDT4Generator.cxx @@ -46,16 +46,6 @@ void AppendDictionary(cmXMLWriter& xml, const char* key, T const& value) cmExtraEclipseCDT4Generator::cmExtraEclipseCDT4Generator() : cmExternalMakefileProjectGenerator() { -// TODO: Verify if __CYGWIN__ should be checked. -//#if defined(_WIN32) && !defined(__CYGWIN__) -#if defined(_WIN32) - this->SupportedGlobalGenerators.push_back("NMake Makefiles"); - this->SupportedGlobalGenerators.push_back("MinGW Makefiles"); -// this->SupportedGlobalGenerators.push_back("MSYS Makefiles"); -#endif - this->SupportedGlobalGenerators.push_back("Ninja"); - this->SupportedGlobalGenerators.push_back("Unix Makefiles"); - this->SupportsVirtualFolders = true; this->GenerateLinkedResources = true; this->SupportsGmakeErrorParser = true; @@ -64,11 +54,26 @@ cmExtraEclipseCDT4Generator::cmExtraEclipseCDT4Generator() this->CXXEnabled = false; } -void cmExtraEclipseCDT4Generator::GetDocumentation(cmDocumentationEntry& entry, - const std::string&) const +cmExternalMakefileProjectGeneratorFactory* +cmExtraEclipseCDT4Generator::GetFactory() { - entry.Name = this->GetName(); - entry.Brief = "Generates Eclipse CDT 4.0 project files."; + static cmExternalMakefileProjectGeneratorSimpleFactory< + cmExtraEclipseCDT4Generator> + factory("Eclipse CDT4", "Generates Eclipse CDT 4.0 project files."); + + if (factory.GetSupportedGlobalGenerators().empty()) { +// TODO: Verify if __CYGWIN__ should be checked. +//#if defined(_WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) + factory.AddSupportedGlobalGenerator("NMake Makefiles"); + factory.AddSupportedGlobalGenerator("MinGW Makefiles"); +// factory.AddSupportedGlobalGenerator("MSYS Makefiles"); +#endif + factory.AddSupportedGlobalGenerator("Ninja"); + factory.AddSupportedGlobalGenerator("Unix Makefiles"); + } + + return &factory; } void cmExtraEclipseCDT4Generator::EnableLanguage( |