Support Visual Studio 2019 project generation. Default vs option is still kept as vs2017 for now. Change-Id: I8804049700c8e529eae7cab4fedd9d8589c259a4 Reviewed-on: https://gn-review.googlesource.com/c/gn/+/4440 Reviewed-by: Brett Wilson <brettw@chromium.org> Commit-Queue: Brett Wilson <brettw@chromium.org>
diff --git a/tools/gn/command_gen.cc b/tools/gn/command_gen.cc index 82046d2..a8033ab 100644 --- a/tools/gn/command_gen.cc +++ b/tools/gn/command_gen.cc
@@ -39,6 +39,7 @@ const char kSwitchIdeValueVs2013[] = "vs2013"; const char kSwitchIdeValueVs2015[] = "vs2015"; const char kSwitchIdeValueVs2017[] = "vs2017"; +const char kSwitchIdeValueVs2019[] = "vs2019"; const char kSwitchIdeValueWinSdk[] = "winsdk"; const char kSwitchIdeValueXcode[] = "xcode"; const char kSwitchIdeValueJson[] = "json"; @@ -200,12 +201,15 @@ } return res; } else if (ide == kSwitchIdeValueVs || ide == kSwitchIdeValueVs2013 || - ide == kSwitchIdeValueVs2015 || ide == kSwitchIdeValueVs2017) { + ide == kSwitchIdeValueVs2015 || ide == kSwitchIdeValueVs2017 || + ide == kSwitchIdeValueVs2019) { VisualStudioWriter::Version version = VisualStudioWriter::Version::Vs2017; if (ide == kSwitchIdeValueVs2013) version = VisualStudioWriter::Version::Vs2013; else if (ide == kSwitchIdeValueVs2015) version = VisualStudioWriter::Version::Vs2015; + else if (ide == kSwitchIdeValueVs2019) + version = VisualStudioWriter::Version::Vs2019; std::string sln_name; if (command_line->HasSwitch(kSwitchSln)) @@ -333,6 +337,7 @@ "vs2013" - Visual Studio 2013 project/solution files. "vs2015" - Visual Studio 2015 project/solution files. "vs2017" - Visual Studio 2017 project/solution files. + "vs2019" - Visual Studio 2019 project/solution files. "xcode" - Xcode workspace/solution files. "qtcreator" - QtCreator project files. "json" - JSON file containing target information
diff --git a/tools/gn/visual_studio_writer.cc b/tools/gn/visual_studio_writer.cc index 7033358..9870fbc 100644 --- a/tools/gn/visual_studio_writer.cc +++ b/tools/gn/visual_studio_writer.cc
@@ -72,12 +72,15 @@ const char kToolsetVersionVs2013[] = "v120"; // Visual Studio 2013 const char kToolsetVersionVs2015[] = "v140"; // Visual Studio 2015 const char kToolsetVersionVs2017[] = "v141"; // Visual Studio 2017 +const char kToolsetVersionVs2019[] = "v142"; // Visual Studio 2019 const char kProjectVersionVs2013[] = "12.0"; // Visual Studio 2013 const char kProjectVersionVs2015[] = "14.0"; // Visual Studio 2015 const char kProjectVersionVs2017[] = "15.0"; // Visual Studio 2017 +const char kProjectVersionVs2019[] = "16.0"; // Visual Studio 2019 const char kVersionStringVs2013[] = "Visual Studio 2013"; // Visual Studio 2013 const char kVersionStringVs2015[] = "Visual Studio 2015"; // Visual Studio 2015 const char kVersionStringVs2017[] = "Visual Studio 2017"; // Visual Studio 2017 +const char kVersionStringVs2019[] = "Visual Studio 2019"; // Visual Studio 2019 const char kWindowsKitsVersion[] = "10"; // Windows 10 SDK const char kWindowsKitsDefaultVersion[] = "10.0.17134.0"; // Windows 10 SDK @@ -299,6 +302,11 @@ toolset_version_ = kToolsetVersionVs2017; version_string_ = kVersionStringVs2017; break; + case Version::Vs2019: + project_version_ = kProjectVersionVs2019; + toolset_version_ = kToolsetVersionVs2019; + version_string_ = kVersionStringVs2019; + break; default: NOTREACHED() << "Not a valid Visual Studio Version: " << version; } @@ -517,9 +525,7 @@ { std::unique_ptr<XmlElementWriter> properties = project.SubElement("PropertyGroup"); - { - properties->SubElement("OutDir")->Text("$(SolutionDir)"); - } + properties->SubElement("OutDir")->Text("$(SolutionDir)"); properties->SubElement("TargetName")->Text("$(ProjectName)"); if (target->output_type() != Target::GROUP) { properties->SubElement("TargetPath")->Text("$(OutDir)\\" + ninja_target);
diff --git a/tools/gn/visual_studio_writer.h b/tools/gn/visual_studio_writer.h index 3193646..9b2a239 100644 --- a/tools/gn/visual_studio_writer.h +++ b/tools/gn/visual_studio_writer.h
@@ -29,7 +29,8 @@ enum Version { Vs2013 = 1, // Visual Studio 2013 Vs2015, // Visual Studio 2015 - Vs2017 // Visual Studio 2017 + Vs2017, // Visual Studio 2017 + Vs2019, // Visual Studio 2019 }; // Writes Visual Studio project and solution files. |sln_name| is the optional