Selaa lähdekoodia

Merge topic 'vs2013_toolset_14369'

3064f80 VS: Generate ToolsVersion matching each VS version
Brad King 12 vuotta sitten
vanhempi
sitoutus
4d5d8df0cd

+ 3 - 0
Source/cmGlobalVisualStudio10Generator.h

@@ -81,6 +81,9 @@ public:
 
   void PathTooLong(cmTarget* target, cmSourceFile* sf,
                    std::string const& sfRel);
+
+  virtual const char* GetToolsVersion() { return "4.0"; }
+
 protected:
   virtual const char* GetIDEVersion() { return "10.0"; }
 

+ 5 - 0
Source/cmGlobalVisualStudio12Generator.h

@@ -31,6 +31,11 @@ public:
 
   /** TODO: VS 12 user macro support. */
   virtual std::string GetUserMacrosDirectory() { return ""; }
+
+  //in Visual Studio 2013 they detached the MSBuild tools version
+  //from the .Net Framework version and instead made it have it's own
+  //version number
+  virtual const char* GetToolsVersion() { return "12.0"; }
 protected:
   virtual const char* GetIDEVersion() { return "12.0"; }
 private:

+ 20 - 12
Source/cmVisualStudio10TargetGenerator.cxx

@@ -216,12 +216,16 @@ void cmVisualStudio10TargetGenerator::Generate()
   // Write the encoding header into the file
   char magic[] = {0xEF,0xBB, 0xBF};
   this->BuildFileStream->write(magic, 3);
-  this->WriteString("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",0);
-  this->WriteString("<Project DefaultTargets=\"Build\" "
-                    "ToolsVersion=\"4.0\" "
-                    "xmlns=\"http://schemas.microsoft.com/"
-                    "developer/msbuild/2003\">\n",
-                    0);
+
+  //get the tools version to use
+  const std::string toolsVer(this->GlobalGenerator->GetToolsVersion());
+  std::string project_defaults="<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
+  project_defaults.append("<Project DefaultTargets=\"Build\" ToolsVersion=\"");
+  project_defaults.append(toolsVer +"\" ");
+  project_defaults.append(
+          "xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n");
+  this->WriteString(project_defaults.c_str(),0);
+
   this->WriteProjectConfigurations();
   this->WriteString("<PropertyGroup Label=\"Globals\">\n", 1);
   this->WriteString("<ProjectGUID>", 2);
@@ -716,12 +720,16 @@ void cmVisualStudio10TargetGenerator::WriteGroups()
   fout.write(magic, 3);
   cmGeneratedFileStream* save = this->BuildFileStream;
   this->BuildFileStream = & fout;
-  this->WriteString("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
-                    "<Project "
-                    "ToolsVersion=\"4.0\" "
-                    "xmlns=\"http://schemas.microsoft.com/"
-                    "developer/msbuild/2003\">\n",
-                    0);
+
+  //get the tools version to use
+  const std::string toolsVer(this->GlobalGenerator->GetToolsVersion());
+  std::string project_defaults="<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
+  project_defaults.append("<Project ToolsVersion=\"");
+  project_defaults.append(toolsVer +"\" ");
+  project_defaults.append(
+        "xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n");
+  this->WriteString(project_defaults.c_str(),0);
+
   for(ToolSourceMap::const_iterator ti = this->Tools.begin();
       ti != this->Tools.end(); ++ti)
     {