From 23d8525d460f0b4a4e2a2cc55f82bad87438c05c Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 1 Feb 2007 16:56:36 -0500 Subject: [PATCH] BUG: Use the exe/lib output path for .pdb file location. This addresses bug#3277 and bug#4287. --- Source/cmMakefileTargetGenerator.cxx | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 3f4ae1487..3245d2f13 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -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, - cmLocalGenerator::MAKEFILE); + 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();