diff options
Diffstat (limited to 'Source/cmExtraCodeBlocksGenerator.h')
-rw-r--r-- | Source/cmExtraCodeBlocksGenerator.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Source/cmExtraCodeBlocksGenerator.h b/Source/cmExtraCodeBlocksGenerator.h new file mode 100644 index 0000000..be3af25 --- /dev/null +++ b/Source/cmExtraCodeBlocksGenerator.h @@ -0,0 +1,54 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#ifndef cmExtraCodeBlocksGenerator_h +#define cmExtraCodeBlocksGenerator_h + +#include "cmConfigure.h" // IWYU pragma: keep + +#include "cmExternalMakefileProjectGenerator.h" + +#include <string> +#include <vector> + +class cmGeneratorTarget; +class cmLocalGenerator; +class cmMakefile; +class cmXMLWriter; + +/** \class cmExtraCodeBlocksGenerator + * \brief Write CodeBlocks project files for Makefile based projects + */ +class cmExtraCodeBlocksGenerator : public cmExternalMakefileProjectGenerator +{ +public: + cmExtraCodeBlocksGenerator(); + + static cmExternalMakefileProjectGeneratorFactory* GetFactory(); + + void Generate() 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 |