/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include #include #include "cmExternalMakefileProjectGenerator.h" class cmLocalGenerator; class cmMakefile; class cmGeneratorTarget; class cmXMLWriter; class cmSourceFile; class cmExtraCodeLiteGenerator : public cmExternalMakefileProjectGenerator { protected: std::string ConfigName; std::string WorkspacePath; unsigned int CpuCount = 2; std::string GetCodeLiteCompilerName(cmMakefile const* mf) const; std::string GetConfigurationName(cmMakefile const* mf) const; std::string GetBuildCommand(cmMakefile const* mf, std::string const& targetName) const; std::string GetCleanCommand(cmMakefile const* mf, std::string const& targetName) const; std::string GetRebuildCommand(cmMakefile const* mf, std::string const& targetName) const; std::string GetSingleFileBuildCommand(cmMakefile const* mf) const; std::vector CreateProjectsByTarget(cmXMLWriter* xml); std::vector CreateProjectsByProjectMaps(cmXMLWriter* xml); std::string CollectSourceFiles(cmMakefile const* makefile, cmGeneratorTarget const* gt, std::map& cFiles, std::set& otherFiles); void FindMatchingHeaderfiles(std::map& cFiles, std::set& otherFiles); void CreateProjectSourceEntries(std::map& cFiles, std::set& otherFiles, cmXMLWriter* xml, std::string const& projectPath, cmMakefile const* mf, std::string const& projectType, std::string const& targetName); void CreateFoldersAndFiles(std::set& cFiles, cmXMLWriter& xml, std::string const& projectPath); void CreateFoldersAndFiles(std::map& cFiles, cmXMLWriter& xml, std::string const& projectPath); public: cmExtraCodeLiteGenerator(); static cmExternalMakefileProjectGeneratorFactory* GetFactory(); void Generate() override; void CreateProjectFile(std::vector const& lgs); void CreateNewProjectFile(std::vector const& lgs, std::string const& filename); void CreateNewProjectFile(cmGeneratorTarget const* lg, std::string const& filename); };