1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
5 #include "cmConfigure.h" // IWYU pragma: keep
11 #include <cm/optional>
13 class cmSlnProjectEntry
16 cmSlnProjectEntry() {}
17 cmSlnProjectEntry(const std::string& guid, const std::string& name,
18 const std::string& relativePath)
21 , RelativePath(relativePath)
25 std::string GetGUID() const { return Guid; }
26 std::string GetName() const { return Name; }
27 std::string GetRelativePath() const { return RelativePath; }
29 void AddProjectConfiguration(const std::string& solutionConfiguration,
30 const std::string& projectConfiguration);
32 std::string GetProjectConfiguration(
33 const std::string& solutionConfiguration);
36 std::string Guid, Name, RelativePath;
37 std::map<std::string, std::string> projectConfigurationMap;
43 std::string GetVisualStudioVersion() const { return visualStudioVersion; }
44 void SetVisualStudioVersion(const std::string& version)
46 visualStudioVersion = version;
49 std::string GetMinimumVisualStudioVersion() const
51 return minimumVisualStudioVersion;
54 void SetMinimumVisualStudioVersion(const std::string& version)
56 minimumVisualStudioVersion = version;
59 const cm::optional<cmSlnProjectEntry> GetProjectByGUID(
60 const std::string& projectGUID) const;
62 const cm::optional<cmSlnProjectEntry> GetProjectByName(
63 const std::string& projectName) const;
65 std::vector<cmSlnProjectEntry> GetProjects() const;
67 cmSlnProjectEntry* AddProject(const std::string& projectGUID,
68 const std::string& projectName,
69 const std::string& projectRelativePath);
71 void AddConfiguration(const std::string& configuration)
73 solutionConfigurations.push_back(configuration);
76 std::string GetConfigurationTarget(const std::string& projectName,
77 const std::string& solutionConfiguration,
78 const std::string& platformName);
81 std::string visualStudioVersion, minimumVisualStudioVersion;
82 using ProjectStorage = std::map<std::string, cmSlnProjectEntry>;
83 ProjectStorage ProjectsByGUID;
84 using ProjectStringIndex = std::map<std::string, ProjectStorage::iterator>;
85 ProjectStringIndex ProjectNameIndex;
86 std::vector<std::string> solutionConfigurations;