diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index aac941e6a8b7497d75afe0b2419ffdca9aa45395..c6f248ce3682be2c9a252d2eb774177b1d7a9af0 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -743,7 +743,7 @@ cmGeneratorTarget::GetCompilePDBName(const std::string& config) const std::string cmGeneratorTarget::GetCompilePDBPath(const std::string& config) const { - std::string dir = this->Target->GetCompilePDBDirectory(config); + std::string dir = this->GetCompilePDBDirectory(config); std::string name = this->GetCompilePDBName(config); if(dir.empty() && !name.empty()) { @@ -1824,6 +1824,16 @@ void cmGeneratorTarget::TraceDependencies() tracer.Trace(); } +std::string +cmGeneratorTarget::GetCompilePDBDirectory(const std::string& config) const +{ + if(cmTarget::CompileInfo const* info = this->Target->GetCompileInfo(config)) + { + return info->CompilePdbDir; + } + return ""; +} + //---------------------------------------------------------------------------- void cmGeneratorTarget::GetAppleArchs(const std::string& config, std::vector<std::string>& archVec) const diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 52ab6c0c52e81663dabd4ae2ae42fe81c562db62..3dbbca165f7cdb1ab3cebbe75e39c041485d7d6e 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -214,6 +214,12 @@ public: */ void TraceDependencies(); + /** Get the directory in which to place the target compiler .pdb file. + If the configuration name is given then the generator will add its + subdirectory for that configuration. Otherwise just the canonical + compiler pdb output directory is given. */ + std::string GetCompilePDBDirectory(const std::string& config = "") const; + /** Get sources that must be built before the given source. */ std::vector<cmSourceFile*> const* GetSourceDepends(cmSourceFile const* sf) const; diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index afe145ac55593aba9f4d8bbfe7507482757268ce..ccb097458cb301e8bd7f3ed72449267da7942f9d 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -130,7 +130,7 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) } std::string compilePdbOutputPath = - this->Target->GetCompilePDBDirectory(this->ConfigName); + this->GeneratorTarget->GetCompilePDBDirectory(this->ConfigName); cmSystemTools::MakeDirectory(compilePdbOutputPath.c_str()); std::string pdbOutputPath = this->Target->GetPDBDirectory(this->ConfigName); diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index bb0f9dd76206684cb46497108c14a75bace3f747..2f995e8c3daa653f93f0709ae3a72d3387b5680b 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -311,7 +311,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules } std::string compilePdbOutputPath = - this->Target->GetCompilePDBDirectory(this->ConfigName); + this->GeneratorTarget->GetCompilePDBDirectory(this->ConfigName); cmSystemTools::MakeDirectory(compilePdbOutputPath.c_str()); std::string pdbOutputPath = this->Target->GetPDBDirectory(this->ConfigName); diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 8b64bc4ab687a636dd7060d9f946a008a928ca54..9308113acd0c3d7f62e4849e73d8dfa4a16e0b2e 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -68,12 +68,6 @@ struct cmTarget::OutputInfo std::string PdbDir; }; -//---------------------------------------------------------------------------- -struct cmTarget::CompileInfo -{ - std::string CompilePdbDir; -}; - //---------------------------------------------------------------------------- class cmTargetInternals { @@ -2672,16 +2666,6 @@ std::string cmTarget::GetPDBDirectory(const std::string& config) const return ""; } -//---------------------------------------------------------------------------- -std::string cmTarget::GetCompilePDBDirectory(const std::string& config) const -{ - if(CompileInfo const* info = this->GetCompileInfo(config)) - { - return info->CompilePdbDir; - } - return ""; -} - //---------------------------------------------------------------------------- const char* cmTarget::ImportedGetLocation(const std::string& config) const { diff --git a/Source/cmTarget.h b/Source/cmTarget.h index a6f2465228838c4009448e27065faf95424fd572..868983830c4959de0a8d1fd30f20b88cb854c788 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -334,12 +334,6 @@ public: pdb output directory is given. */ std::string GetPDBDirectory(const std::string& config) const; - /** Get the directory in which to place the target compiler .pdb file. - If the configuration name is given then the generator will add its - subdirectory for that configuration. Otherwise just the canonical - compiler pdb output directory is given. */ - std::string GetCompilePDBDirectory(const std::string& config = "") const; - const char* ImportedGetLocation(const std::string& config) const; /** Get the target major and minor version numbers interpreted from @@ -633,7 +627,11 @@ private: ImportInfo& info) const; // Cache target compile paths for each configuration. - struct CompileInfo; + struct CompileInfo + { + std::string CompilePdbDir; + }; + CompileInfo const* GetCompileInfo(const std::string& config) const; LinkInterface const*