/* 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(const cmMakefile* mf) const; std::string GetConfigurationName(const cmMakefile* mf) const; std::string GetBuildCommand(const cmMakefile* mf, const std::string& targetName) const; std::string GetCleanCommand(const cmMakefile* mf, const std::string& targetName) const; std::string GetRebuildCommand(const cmMakefile* mf, const std::string& targetName) const; std::string GetSingleFileBuildCommand(const cmMakefile* mf) const; std::vector CreateProjectsByTarget(cmXMLWriter* xml); std::vector CreateProjectsByProjectMaps(cmXMLWriter* xml); std::string CollectSourceFiles(const cmMakefile* makefile, const cmGeneratorTarget* 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, const std::string& projectPath, const cmMakefile* mf, const std::string& projectType, const std::string& targetName); void CreateFoldersAndFiles(std::set& cFiles, cmXMLWriter& xml, const std::string& projectPath); void CreateFoldersAndFiles(std::map& cFiles, cmXMLWriter& xml, const std::string& projectPath); public: cmExtraCodeLiteGenerator(); static cmExternalMakefileProjectGeneratorFactory* GetFactory(); void Generate() override; void CreateProjectFile(const std::vector& lgs); void CreateNewProjectFile(const std::vector& lgs, const std::string& filename); void CreateNewProjectFile(const cmGeneratorTarget* lg, const std::string& filename); };