diff options
author | Alexander Neundorf <neundorf@kde.org> | 2007-06-08 15:57:16 (GMT) |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2007-06-08 15:57:16 (GMT) |
commit | 0ddc9f62e59b2b97625f50eb444093bb36950113 (patch) | |
tree | bdba7bdfa514c60404e900724bbe3f52b340fcd9 /Source/cmExternalMakefileProjectGenerator.cxx | |
parent | 79077f83731e598298ec35392911848f87d32f23 (diff) | |
download | CMake-0ddc9f62e59b2b97625f50eb444093bb36950113.zip CMake-0ddc9f62e59b2b97625f50eb444093bb36950113.tar.gz CMake-0ddc9f62e59b2b97625f50eb444093bb36950113.tar.bz2 |
ENH: add cmExternalMakefileProjectGenerator, which should make it easier to
write generators for IDE projects, which use already existing makefiles
(current the kdevelop generator)
-first stept of the export interface, iniitial export() command
-more replacements for the FIND_XXX docs
Alex
Diffstat (limited to 'Source/cmExternalMakefileProjectGenerator.cxx')
-rw-r--r-- | Source/cmExternalMakefileProjectGenerator.cxx | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Source/cmExternalMakefileProjectGenerator.cxx b/Source/cmExternalMakefileProjectGenerator.cxx new file mode 100644 index 0000000..e1a8bcf --- /dev/null +++ b/Source/cmExternalMakefileProjectGenerator.cxx @@ -0,0 +1,70 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2007 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + +#include <assert.h> + +#include "cmExternalMakefileProjectGenerator.h" + +std::string cmExternalMakefileProjectGenerator::CreateFullGeneratorName( + const char* globalGenerator, + const char* extraGenerator) +{ + std::string fullName; + if (globalGenerator) + { + fullName = globalGenerator; + if (extraGenerator && *extraGenerator) + { + fullName += " - "; + fullName += extraGenerator; + } + } + return fullName; +} + +const char* cmExternalMakefileProjectGenerator::GetGlobalGeneratorName( + const char* fullName) +{ + // at least one global generator must be supported + assert(!this->SupportedGlobalGenerators.empty()); + + if (fullName==0) + { + return 0; + } + + std::string currentName = fullName; + // if we get only the short name, take the first global generator as default + if (currentName == this->GetName()) + { + return this->SupportedGlobalGenerators[0].c_str(); + } + + // otherwise search for the matching global generator + for (std::vector<std::string>::const_iterator + it = this->SupportedGlobalGenerators.begin(); + it != this->SupportedGlobalGenerators.end(); + ++it) + { + if (this->CreateFullGeneratorName(it->c_str(), this->GetName()) + == currentName) + { + return it->c_str(); + } + } + return 0; +} |