@@ -41,12 +41,6 @@ String toPathString(GeneratorType t)
4141 {
4242 case GeneratorType::VisualStudio:
4343 return " vs" ;
44- case GeneratorType::VisualStudioNMake:
45- return " vs_nmake" ;
46- case GeneratorType::VisualStudioUtility:
47- return " vs_util" ;
48- case GeneratorType::VisualStudioNMakeAndUtility:
49- return " vs_nmake_util" ;
5044 case GeneratorType::Ninja:
5145 return " ninja" ;
5246 case GeneratorType::Batch:
@@ -66,18 +60,29 @@ String toPathString(GeneratorType t)
6660 }
6761}
6862
63+ String toPathString (VsGeneratorType t)
64+ {
65+ switch (t)
66+ {
67+ case VsGeneratorType::VisualStudio:
68+ return " vs" ;
69+ case VsGeneratorType::VisualStudioNMake:
70+ return " vs_nmake" ;
71+ case VsGeneratorType::VisualStudioUtility:
72+ return " vs_util" ;
73+ case VsGeneratorType::VisualStudioNMakeAndUtility:
74+ return " vs_nmake_util" ;
75+ default :
76+ throw SW_LOGIC_ERROR (" not implemented" );
77+ }
78+ }
79+
6980static String toString (GeneratorType t)
7081{
7182 switch (t)
7283 {
7384 case GeneratorType::VisualStudio:
7485 return " Visual Studio" ;
75- case GeneratorType::VisualStudioNMake:
76- return " Visual Studio NMake" ;
77- case GeneratorType::VisualStudioUtility:
78- return " Visual Studio Utility" ;
79- case GeneratorType::VisualStudioNMakeAndUtility:
80- return " Visual Studio NMake and Utility" ;
8186 case GeneratorType::Ninja:
8287 return " Ninja" ;
8388 case GeneratorType::Batch:
@@ -97,19 +102,30 @@ static String toString(GeneratorType t)
97102 }
98103}
99104
105+ static String toString (VsGeneratorType t)
106+ {
107+ switch (t)
108+ {
109+ case VsGeneratorType::VisualStudio:
110+ return " Visual Studio" ;
111+ case VsGeneratorType::VisualStudioNMake:
112+ return " Visual Studio NMake" ;
113+ case VsGeneratorType::VisualStudioUtility:
114+ return " Visual Studio Utility" ;
115+ case VsGeneratorType::VisualStudioNMakeAndUtility:
116+ return " Visual Studio NMake and Utility" ;
117+ default :
118+ throw SW_LOGIC_ERROR (" not implemented" );
119+ }
120+ }
121+
100122static GeneratorType fromString (const String &s)
101123{
102124 // make icasecmp
103125 if (0 )
104126 ;
105127 else if (boost::istarts_with (s, " VS_IDE" ) || boost::istarts_with (s, " VS" ))
106128 return GeneratorType::VisualStudio;
107- else if (boost::istarts_with (s, " VS_NMake" ))
108- return GeneratorType::VisualStudioNMake;
109- else if (boost::istarts_with (s, " VS_Utility" ) || boost::istarts_with (s, " VS_Util" ))
110- return GeneratorType::VisualStudioUtility;
111- else if (boost::istarts_with (s, " VS_NMakeAndUtility" ) || boost::istarts_with (s, " VS_NMakeAndUtil" ) || boost::istarts_with (s, " VS_NMakeUtil" ))
112- return GeneratorType::VisualStudioNMakeAndUtility;
113129 else if (boost::iequals (s, " Ninja" ))
114130 return GeneratorType::Ninja;
115131 else if (boost::iequals (s, " Make" ) || boost::iequals (s, " Makefile" ))
@@ -125,7 +141,23 @@ static GeneratorType fromString(const String &s)
125141 else if (boost::iequals (s, " SwExPlan" ))
126142 return GeneratorType::SwExecutionPlan;
127143 // else if (boost::iequals(s, "qtc"))
128- // return GeneratorType::qtc;
144+ // return GeneratorType::qtc;
145+ throw SW_RUNTIME_ERROR (" Unknown generator: " + s);
146+ }
147+
148+ static VsGeneratorType fromStringVs (const String &s)
149+ {
150+ // make icasecmp
151+ if (0 )
152+ ;
153+ else if (boost::istarts_with (s, " VS_IDE" ) || boost::istarts_with (s, " VS" ))
154+ return VsGeneratorType::VisualStudio;
155+ else if (boost::istarts_with (s, " VS_NMake" ))
156+ return VsGeneratorType::VisualStudioNMake;
157+ else if (boost::istarts_with (s, " VS_Utility" ) || boost::istarts_with (s, " VS_Util" ))
158+ return VsGeneratorType::VisualStudioUtility;
159+ else if (boost::istarts_with (s, " VS_NMakeAndUtility" ) || boost::istarts_with (s, " VS_NMakeAndUtil" ) || boost::istarts_with (s, " VS_NMakeUtil" ))
160+ return VsGeneratorType::VisualStudioNMakeAndUtility;
129161 throw SW_RUNTIME_ERROR (" Unknown generator: " + s);
130162}
131163
@@ -136,12 +168,10 @@ std::unique_ptr<Generator> Generator::create(const String &s)
136168 switch (t)
137169 {
138170 case GeneratorType::VisualStudio:
139- case GeneratorType::VisualStudioNMake:
140- case GeneratorType::VisualStudioUtility:
141- case GeneratorType::VisualStudioNMakeAndUtility:
142171 {
143172 auto g1 = std::make_unique<VSGenerator>();
144173 g1->version = Version (vsVersionFromString (s));
174+ g1->vstype = fromStringVs (s);
145175 g = std::move (g1);
146176 break ;
147177 }
0 commit comments