BUG: Use the exe/lib output path for .pdb file location. This addresses bug#3277 and bug#4287.

This commit is contained in:
Brad King 2007-02-01 16:56:36 -05:00
parent 4bc0fd0941
commit 23d8525d46
1 changed files with 21 additions and 7 deletions

View File

@ -466,15 +466,29 @@ cmMakefileTargetGenerator
this->Makefile->GetRequiredDefinition(compileRuleVar.c_str());
cmSystemTools::ExpandListArgument(compileRule, commands);
std::string outpath = this->Makefile->GetStartOutputDirectory();
outpath += "/";
outpath += this->Target->GetName();
outpath += ".pdb";
outpath = this->Convert(outpath.c_str(), cmLocalGenerator::FULL,
std::string targetOutPathPDB;
{
std::string targetFullPathPDB;
const char* configName = this->LocalGenerator->ConfigurationName.c_str();
if(this->Target->GetType() == cmTarget::EXECUTABLE)
{
targetFullPathPDB = this->LocalGenerator->ExecutableOutputPath;
targetFullPathPDB += this->Target->GetPDBName(configName);
}
else if(this->Target->GetType() == cmTarget::STATIC_LIBRARY ||
this->Target->GetType() == cmTarget::SHARED_LIBRARY ||
this->Target->GetType() == cmTarget::MODULE_LIBRARY)
{
targetFullPathPDB = this->LocalGenerator->LibraryOutputPath;
targetFullPathPDB += this->Target->GetPDBName(configName);
}
targetOutPathPDB =
this->Convert(targetFullPathPDB.c_str(),cmLocalGenerator::FULL,
cmLocalGenerator::MAKEFILE);
}
cmLocalGenerator::RuleVariables vars;
vars.Language = lang;
vars.TargetPDB = outpath.c_str();
vars.TargetPDB = targetOutPathPDB.c_str();
vars.Source = sourceFile.c_str();
vars.Object = relativeObj.c_str();
std::string objdir = this->LocalGenerator->GetHomeRelativeOutputPath();