Explorar el Código

Always set OutputPath in VS 10 projects

The default $(OutDir)$(TargetName)$(TargetExt) for this value works in
most cases because we set the three properties.  However, if the target
property PREFIX contains a path component (not documented but happens to
work in other VS generators) we drop it from TargetName and do not put
it in OutDir either.  This commit corrects the resulting path by setting
the OutputPath property explicitly with the full path.

See issue #9768.
Brad King hace 16 años
padre
commit
d4377c3377
Se han modificado 1 ficheros con 9 adiciones y 4 borrados
  1. 9 4
      Source/cmVisualStudio10TargetGenerator.cxx

+ 9 - 4
Source/cmVisualStudio10TargetGenerator.cxx

@@ -1133,13 +1133,18 @@ void cmVisualStudio10TargetGenerator::WriteLinkOptions(std::string const&
                                   targetNameImport, targetNamePDB, 
                                   config.c_str());
     }
-  std::string imLib = this->Target->GetDirectory(config.c_str(), true);
-  std::string dir = this->Target->GetDirectory(config.c_str(), true);
+
+  std::string dir = this->Target->GetDirectory(config.c_str());
   dir += "/";
-  imLib += "/";
-  imLib += targetNameImport;
+  std::string out = dir;
+  out += targetNameFull;
   std::string pdb = dir;
   pdb += targetNamePDB;
+  std::string imLib = this->Target->GetDirectory(config.c_str(), true);
+  imLib += "/";
+  imLib += targetNameImport;
+
+  linkOptions.AddFlag("OutputFile", out.c_str());
   linkOptions.AddFlag("ImportLibrary", imLib.c_str());
   linkOptions.AddFlag("ProgramDataBaseFileName", pdb.c_str());
   linkOptions.Parse(flags.c_str());