| /* 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 <map> | 
 | #include <string> | 
 | #include <vector> | 
 |  | 
 | #include "cmExternalMakefileProjectGenerator.h" | 
 |  | 
 | class cmGeneratedFileStream; | 
 | class cmGeneratorTarget; | 
 | class cmLocalGenerator; | 
 | class cmMakefile; | 
 | class cmSourceFile; | 
 |  | 
 | /** \class cmExtraSublimeTextGenerator | 
 |  * \brief Write Sublime Text 2 project files for Makefile based projects | 
 |  */ | 
 | class cmExtraSublimeTextGenerator : public cmExternalMakefileProjectGenerator | 
 | { | 
 | public: | 
 |   static cmExternalMakefileProjectGeneratorFactory* GetFactory(); | 
 |   using MapSourceFileFlags = std::map<std::string, std::vector<std::string>>; | 
 |   cmExtraSublimeTextGenerator(); | 
 |  | 
 |   void Generate() override; | 
 |  | 
 | private: | 
 |   void CreateProjectFile(const std::vector<cmLocalGenerator*>& lgs); | 
 |  | 
 |   void CreateNewProjectFile(const std::vector<cmLocalGenerator*>& lgs, | 
 |                             const std::string& filename); | 
 |  | 
 |   /** Appends all targets as build systems to the project file and get all | 
 |    * include directories and compiler definitions used. | 
 |    */ | 
 |   void AppendAllTargets(const std::vector<cmLocalGenerator*>& lgs, | 
 |                         const cmMakefile* mf, cmGeneratedFileStream& fout, | 
 |                         MapSourceFileFlags& sourceFileFlags); | 
 |   /** Returns the build command that needs to be executed to build the | 
 |    *  specified target. | 
 |    */ | 
 |   std::string BuildMakeCommand(const std::string& make, | 
 |                                const std::string& makefile, | 
 |                                const std::string& target); | 
 |   /** Appends the specified target to the generated project file as a Sublime | 
 |    *  Text build system. | 
 |    */ | 
 |   void AppendTarget(cmGeneratedFileStream& fout, const std::string& targetName, | 
 |                     cmLocalGenerator* lg, cmGeneratorTarget* target, | 
 |                     const char* make, const cmMakefile* makefile, | 
 |                     const char* compiler, MapSourceFileFlags& sourceFileFlags, | 
 |                     bool firstTarget); | 
 |   /** | 
 |    * Compute the flags for compilation of object files for a given @a language. | 
 |    * @note Generally it is the value of the variable whose name is computed | 
 |    *       by LanguageFlagsVarName(). | 
 |    */ | 
 |   std::string ComputeFlagsForObject(cmSourceFile* source, cmLocalGenerator* lg, | 
 |                                     cmGeneratorTarget* gtgt); | 
 |  | 
 |   std::string ComputeDefines(cmSourceFile* source, cmLocalGenerator* lg, | 
 |                              cmGeneratorTarget* gtgt); | 
 |  | 
 |   std::string ComputeIncludes(cmSourceFile* source, cmLocalGenerator* lg, | 
 |                               cmGeneratorTarget* gtgt); | 
 |  | 
 |   bool Open(const std::string& bindir, const std::string& projectName, | 
 |             bool dryRun) override; | 
 |  | 
 |   bool ExcludeBuildFolder; | 
 |   std::string EnvSettings; | 
 | }; |