diff options
Diffstat (limited to 'Source/cmExtraCodeBlocksGenerator.h')
-rw-r--r-- | Source/cmExtraCodeBlocksGenerator.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Source/cmExtraCodeBlocksGenerator.h b/Source/cmExtraCodeBlocksGenerator.h new file mode 100644 index 0000000..31ea500 --- /dev/null +++ b/Source/cmExtraCodeBlocksGenerator.h @@ -0,0 +1,70 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2004-2009 Kitware, Inc. + Copyright 2004 Alexander Neundorf (neundorf@kde.org) + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmExtraCodeBlocksGenerator_h +#define cmExtraCodeBlocksGenerator_h + +#include "cmExternalMakefileProjectGenerator.h" + +class cmLocalGenerator; +class cmMakefile; +class cmGeneratorTarget; +class cmXMLWriter; + +/** \class cmExtraCodeBlocksGenerator + * \brief Write CodeBlocks project files for Makefile based projects + */ +class cmExtraCodeBlocksGenerator : public cmExternalMakefileProjectGenerator +{ +public: + cmExtraCodeBlocksGenerator(); + + std::string GetName() const CM_OVERRIDE + { + return cmExtraCodeBlocksGenerator::GetActualName(); + } + static std::string GetActualName() { return "CodeBlocks"; } + static cmExternalMakefileProjectGenerator* New() + { + return new cmExtraCodeBlocksGenerator; + } + /** Get the documentation entry for this generator. */ + void GetDocumentation(cmDocumentationEntry& entry, + const std::string& fullName) const CM_OVERRIDE; + + void Generate() CM_OVERRIDE; + +private: + struct CbpUnit + { + std::vector<const cmGeneratorTarget*> Targets; + }; + + void CreateProjectFile(const std::vector<cmLocalGenerator*>& lgs); + + void CreateNewProjectFile(const std::vector<cmLocalGenerator*>& lgs, + const std::string& filename); + std::string CreateDummyTargetFile(cmLocalGenerator* lg, + cmGeneratorTarget* target) const; + + std::string GetCBCompilerId(const cmMakefile* mf); + int GetCBTargetType(cmGeneratorTarget* target); + std::string BuildMakeCommand(const std::string& make, const char* makefile, + const std::string& target, + const std::string& makeFlags); + void AppendTarget(cmXMLWriter& xml, const std::string& targetName, + cmGeneratorTarget* target, const char* make, + const cmLocalGenerator* lg, const char* compiler, + const std::string& makeFlags); +}; + +#endif |