Quellcode durchsuchen

VS: Update for Visual Studio 2019 Preview 2

The toolset is now called `v142`.  Use matching flag tables.

Fixes: #18834
Brad King vor 7 Jahren
Ursprung
Commit
626c51f47b

+ 1 - 1
Help/release/dev/vs2019.rst

@@ -2,7 +2,7 @@ vs2019
 ------
 
 * The :generator:`Visual Studio 16 2019` generator was added.  This is
-  experimental and based on "Visual Studio 2019 Preview 1.1" because this
+  experimental and based on "Visual Studio 2019 Preview 2" because this
   version of VS has not been released.
 
   The VS 2019 generator differs from generators for earlier versions

+ 1 - 2
Source/cmGlobalVisualStudioVersionedGenerator.cxx

@@ -72,8 +72,7 @@ static const char* VSVersionToToolset(
     case cmGlobalVisualStudioGenerator::VS15:
       return "v141";
     case cmGlobalVisualStudioGenerator::VS16:
-      // FIXME: VS 2019 Preview 1.1 uses v141 but preview 2 will use v142.
-      return "v141";
+      return "v142";
   }
   return "";
 }

+ 9 - 1
Source/cmVSSetupHelper.cxx

@@ -188,8 +188,16 @@ bool cmVSSetupAPIHelper::GetVSInstanceInfo(
   // Check if a compiler is installed with this instance.
   {
     std::string const vcRoot = vsInstanceInfo.GetInstallLocation();
-    std::string const vcToolsVersionFile =
+    std::string vcToolsVersionFile =
       vcRoot + "/VC/Auxiliary/Build/Microsoft.VCToolsVersion.default.txt";
+    if (!cmSystemTools::PathExists(vcToolsVersionFile)) {
+      // FIXME: VS 2019 Preview 2 installs the v142 toolset and does not
+      // provide the plain `Microsoft.VCToolsVersion.default.txt` that v141
+      // does.  This should be fixed in preview 3 and this workaround can
+      // be dropped.  Otherwise, we may need to switch to globbing.
+      vcToolsVersionFile = vcRoot +
+        "/VC/Auxiliary/Build/Microsoft.VCToolsVersion.v142.default.txt";
+    }
     std::string vcToolsVersion;
     cmsys::ifstream fin(vcToolsVersionFile.c_str());
     if (!fin || !cmSystemTools::GetLineFromStream(fin, vcToolsVersion)) {

+ 16 - 6
Source/cmVisualStudio10ToolsetOptions.cxx

@@ -11,7 +11,9 @@ std::string cmVisualStudio10ToolsetOptions::GetClFlagTableName(
 {
   std::string const useToolset = this->GetToolsetName(name, toolset);
 
-  if (toolset == "v141") {
+  if (toolset == "v142") {
+    return "v142";
+  } else if (toolset == "v141") {
     return "v141";
   } else if (useToolset == "v140") {
     return "v140";
@@ -31,7 +33,10 @@ std::string cmVisualStudio10ToolsetOptions::GetCSharpFlagTableName(
 {
   std::string const useToolset = this->GetToolsetName(name, toolset);
 
-  if ((useToolset == "v141")) {
+  if (useToolset == "v142") {
+    // FIXME: Add CSharp flag table for v142.
+    return "v141";
+  } else if (useToolset == "v141") {
     return "v141";
   } else if (useToolset == "v140") {
     return "v140";
@@ -51,7 +56,8 @@ std::string cmVisualStudio10ToolsetOptions::GetRcFlagTableName(
 {
   std::string const useToolset = this->GetToolsetName(name, toolset);
 
-  if ((useToolset == "v140") || (useToolset == "v141")) {
+  if ((useToolset == "v140") || (useToolset == "v141") ||
+      (useToolset == "v142")) {
     return "v14";
   } else if (useToolset == "v120") {
     return "v12";
@@ -69,7 +75,8 @@ std::string cmVisualStudio10ToolsetOptions::GetLibFlagTableName(
 {
   std::string const useToolset = this->GetToolsetName(name, toolset);
 
-  if ((useToolset == "v140") || (useToolset == "v141")) {
+  if ((useToolset == "v140") || (useToolset == "v141") ||
+      (useToolset == "v142")) {
     return "v14";
   } else if (useToolset == "v120") {
     return "v12";
@@ -87,7 +94,9 @@ std::string cmVisualStudio10ToolsetOptions::GetLinkFlagTableName(
 {
   std::string const useToolset = this->GetToolsetName(name, toolset);
 
-  if (useToolset == "v141") {
+  if (useToolset == "v142") {
+    return "v142";
+  } else if (useToolset == "v141") {
     return "v141";
   } else if (useToolset == "v140") {
     return "v140";
@@ -107,7 +116,8 @@ std::string cmVisualStudio10ToolsetOptions::GetMasmFlagTableName(
 {
   std::string const useToolset = this->GetToolsetName(name, toolset);
 
-  if ((useToolset == "v140") || (useToolset == "v141")) {
+  if ((useToolset == "v140") || (useToolset == "v141") ||
+      (useToolset == "v142")) {
     return "v14";
   } else if (useToolset == "v120") {
     return "v12";