Browse Source

Merge topic 'fix-10704-manifest-no-vs10'

fbca267 VS: Only use /MANIFEST if hasManifest is true (#11216)
98b448e VS2010: Fixed GenerateManifest flag (#10704)
Brad King 14 years ago
parent
commit
cc5bbed52a
4 changed files with 24 additions and 2 deletions
  1. 6 0
      Source/cmIDEOptions.cxx
  2. 1 0
      Source/cmIDEOptions.h
  3. 13 1
      Source/cmVisualStudio10TargetGenerator.cxx
  4. 4 1
      Source/cmake.cxx

+ 6 - 0
Source/cmIDEOptions.cxx

@@ -171,3 +171,9 @@ void cmIDEOptions::AddFlag(const char* flag, const char* value)
 {
   this->FlagMap[flag] = value;
 }
+
+//----------------------------------------------------------------------------
+void cmIDEOptions::RemoveFlag(const char* flag)
+{
+  this->FlagMap.erase(flag);
+}

+ 1 - 0
Source/cmIDEOptions.h

@@ -28,6 +28,7 @@ public:
   void AddDefine(const std::string& define);
   void AddDefines(const char* defines);
   void AddFlag(const char* flag, const char* value);
+  void RemoveFlag(const char* flag);
 
 protected:
   // create a map of xml tags to the values they should have in the output

+ 13 - 1
Source/cmVisualStudio10TargetGenerator.cxx

@@ -167,6 +167,7 @@ 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/"
@@ -998,6 +999,15 @@ OutputLinkIncremental(std::string const& configName)
   this->WritePlatformConfigTag("LinkIncremental", configName.c_str(), 3);
   *this->BuildFileStream << incremental
                          << "</LinkIncremental>\n"; 
+
+  const char* manifest = "true";
+  if(flags.find("MANIFEST:NO") != flags.npos)
+    {
+    manifest = "false";
+    }
+  this->WritePlatformConfigTag("GenerateManifest", configName.c_str(), 3);
+  *this->BuildFileStream << manifest
+                         << "</GenerateManifest>\n";
 }
 
 //----------------------------------------------------------------------------
@@ -1326,7 +1336,7 @@ void cmVisualStudio10TargetGenerator::WriteLinkOptions(std::string const&
   linkDirs += "%(AdditionalLibraryDirectories)";
   linkOptions.AddFlag("AdditionalLibraryDirectories", linkDirs.c_str());
   linkOptions.AddFlag("AdditionalDependencies", libs.c_str());
-  linkOptions.AddFlag("Version", "0.0");
+  linkOptions.AddFlag("Version", "");
   if(linkOptions.IsDebug() || flags.find("/debug") != flags.npos)
     {
     linkOptions.AddFlag("GenerateDebugInformation", "true");
@@ -1369,6 +1379,8 @@ void cmVisualStudio10TargetGenerator::WriteLinkOptions(std::string const&
     linkOptions.AddFlag("ModuleDefinitionFile",
                         this->ModuleDefinitionFile.c_str());
     }
+
+  linkOptions.RemoveFlag("GenerateManifest");
   linkOptions.OutputAdditionalOptions(*this->BuildFileStream, "      ", "");
   linkOptions.OutputFlagMap(*this->BuildFileStream, "      ");
   

+ 4 - 1
Source/cmake.cxx

@@ -4134,7 +4134,10 @@ int cmake::VisualStudioLinkNonIncremental(std::vector<std::string>& args,
     return -1;
     }
   // Run the link command as given
-  linkCommand.push_back("/MANIFEST");
+  if (hasManifest)
+    {
+    linkCommand.push_back("/MANIFEST");
+    }
   if(!cmake::RunCommand("LINK", linkCommand, verbose))
     {
     return -1;