/* 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 #include 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() CM_OVERRIDE; private: struct CbpUnit { std::vector Targets; }; void CreateProjectFile(const std::vector& lgs); void CreateNewProjectFile(const std::vector& 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