Browse Source

VS: Split user- and generator-provided PlatformToolset

Divide the cmGlobalVisualStudio10Generator "PlatformToolset" member into
two members representing the generator-selected default toolset and the
user-specified CMAKE_GENERATOR_TOOLSET value.  Prefer the user-specified
value, if any, and then fall back to the generator-selected default.
Brad King 11 years ago
parent
commit
98afb4549f

+ 19 - 9
Source/cmGlobalVisualStudio10Generator.cxx

@@ -118,7 +118,7 @@ cmGlobalVisualStudio10Generator::MatchesGeneratorName(
 bool
 cmGlobalVisualStudio10Generator::SetGeneratorToolset(std::string const& ts)
 {
-  this->PlatformToolset = ts;
+  this->GeneratorToolset = ts;
   return true;
 }
 
@@ -126,10 +126,16 @@ cmGlobalVisualStudio10Generator::SetGeneratorToolset(std::string const& ts)
 void cmGlobalVisualStudio10Generator::AddPlatformDefinitions(cmMakefile* mf)
 {
   cmGlobalVisualStudio8Generator::AddPlatformDefinitions(mf);
-  if(!this->PlatformToolset.empty())
+  this->AddVSPlatformToolsetDefinition(mf);
+}
+
+//----------------------------------------------------------------------------
+void cmGlobalVisualStudio10Generator
+::AddVSPlatformToolsetDefinition(cmMakefile* mf) const
+{
+  if(const char* toolset = this->GetPlatformToolset())
     {
-    mf->AddDefinition("CMAKE_VS_PLATFORM_TOOLSET",
-                      this->PlatformToolset.c_str());
+    mf->AddDefinition("CMAKE_VS_PLATFORM_TOOLSET", toolset);
     }
 }
 
@@ -215,11 +221,15 @@ void cmGlobalVisualStudio10Generator
 }
 
 //----------------------------------------------------------------------------
-const char* cmGlobalVisualStudio10Generator::GetPlatformToolset()
+const char* cmGlobalVisualStudio10Generator::GetPlatformToolset() const
 {
-  if(!this->PlatformToolset.empty())
+  if(!this->GeneratorToolset.empty())
+    {
+    return this->GeneratorToolset.c_str();
+    }
+  if(!this->DefaultPlatformToolset.empty())
     {
-    return this->PlatformToolset.c_str();
+    return this->DefaultPlatformToolset.c_str();
     }
   return 0;
 }
@@ -417,7 +427,7 @@ void cmGlobalVisualStudio10Generator::GenerateBuildCommand(
 //----------------------------------------------------------------------------
 bool cmGlobalVisualStudio10Generator::Find64BitTools(cmMakefile* mf)
 {
-  if(!this->PlatformToolset.empty())
+  if(this->GetPlatformToolset())
     {
     return true;
     }
@@ -435,7 +445,7 @@ bool cmGlobalVisualStudio10Generator::Find64BitTools(cmMakefile* mf)
     cmOStringStream m;
     m << "Found Windows SDK v7.1: " << winSDK_7_1;
     mf->DisplayStatus(m.str().c_str(), -1);
-    this->PlatformToolset = "Windows7.1SDK";
+    this->DefaultPlatformToolset = "Windows7.1SDK";
     return true;
     }
   else

+ 4 - 2
Source/cmGlobalVisualStudio10Generator.h

@@ -66,7 +66,7 @@ public:
   bool IsMasmEnabled() const { return this->MasmEnabled; }
 
   /** The toolset name for the target platform.  */
-  const char* GetPlatformToolset();
+  const char* GetPlatformToolset() const;
 
   /**
    * Where does this version of Visual Studio look for macros for the
@@ -99,7 +99,8 @@ protected:
 
   std::string const& GetMSBuildCommand();
 
-  std::string PlatformToolset;
+  std::string GeneratorToolset;
+  std::string DefaultPlatformToolset;
   bool ExpressEdition;
   bool MasmEnabled;
 
@@ -122,5 +123,6 @@ private:
   virtual std::string FindMSBuildCommand();
   virtual std::string FindDevEnvCommand();
   virtual std::string GetVSMakeProgram() { return this->GetMSBuildCommand(); }
+  void AddVSPlatformToolsetDefinition(cmMakefile* mf) const;
 };
 #endif

+ 1 - 1
Source/cmGlobalVisualStudio11Generator.cxx

@@ -117,7 +117,7 @@ cmGlobalVisualStudio11Generator::cmGlobalVisualStudio11Generator(
   this->ExpressEdition = cmSystemTools::ReadRegistryValue(
     "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\11.0\\Setup\\VC;"
     "ProductDir", vc11Express, cmSystemTools::KeyWOW64_32);
-  this->PlatformToolset = "v110";
+  this->DefaultPlatformToolset = "v110";
 }
 
 //----------------------------------------------------------------------------

+ 1 - 1
Source/cmGlobalVisualStudio12Generator.cxx

@@ -92,7 +92,7 @@ cmGlobalVisualStudio12Generator::cmGlobalVisualStudio12Generator(
   this->ExpressEdition = cmSystemTools::ReadRegistryValue(
     "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\12.0\\Setup\\VC;"
     "ProductDir", vc12Express, cmSystemTools::KeyWOW64_32);
-  this->PlatformToolset = "v120";
+  this->DefaultPlatformToolset = "v120";
 }
 
 //----------------------------------------------------------------------------