From 54bd175eea66704a879fc72278cdbb49efdd801c Mon Sep 17 00:00:00 2001 From: Peter Kuemmel Date: Tue, 21 Feb 2012 21:18:05 +0100 Subject: Ninja: windows msvc: create for each target a .pdb file --- Source/cmNinjaNormalTargetGenerator.cxx | 3 +++ Source/cmNinjaTargetGenerator.cxx | 19 +++++++++++++++++++ Source/cmNinjaTargetGenerator.h | 1 + 3 files changed, 23 insertions(+) diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 9294a01..6e08bca 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -136,6 +136,7 @@ cmNinjaNormalTargetGenerator vars.Target = "$out"; vars.TargetSOName = "$SONAME"; vars.TargetInstallNameDir = "$INSTALLNAME_DIR"; + vars.TargetPDB = "$TARGET_PDB"; // Setup the target version. std::string targetVersionMajor; @@ -361,6 +362,8 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() targetOutputImplib.c_str(), cmLocalGenerator::SHELL); } + vars["TARGET_PDB"] = this->GetTargetPDB(); + std::vector *cmdLists[3] = { &this->GetTarget()->GetPreBuildCommands(), &this->GetTarget()->GetPreLinkCommands(), diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 8a563b6..7b1c7d9 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -270,6 +270,23 @@ std::string cmNinjaTargetGenerator::GetTargetName() const return this->Target->GetName(); } +std::string cmNinjaTargetGenerator::GetTargetPDB() const +{ + std::string targetFullPathPDB; + if(this->Target->GetType() == cmTarget::EXECUTABLE || + this->Target->GetType() == cmTarget::STATIC_LIBRARY || + this->Target->GetType() == cmTarget::SHARED_LIBRARY || + this->Target->GetType() == cmTarget::MODULE_LIBRARY) + { + targetFullPathPDB = this->Target->GetDirectory(this->GetConfigName()); + targetFullPathPDB += "/"; + targetFullPathPDB += this->Target->GetPDBName(this->GetConfigName()); + } + + return ConvertToNinjaPath(targetFullPathPDB.c_str()); +} + + void cmNinjaTargetGenerator ::WriteLanguageRules(const std::string& language) @@ -293,6 +310,7 @@ cmNinjaTargetGenerator vars.Object = "$out"; std::string flags = "$FLAGS"; vars.Defines = "$DEFINES"; + vars.TargetPDB = "$TARGET_PDB"; std::string depfile; std::string depfileFlagsName = "CMAKE_DEPFILE_FLAGS_" + language; @@ -426,6 +444,7 @@ cmNinjaTargetGenerator cmNinjaVars vars; vars["FLAGS"] = this->ComputeFlagsForObject(source, language); vars["DEFINES"] = this->ComputeDefines(source, language); + vars["TARGET_PDB"] = this->GetTargetPDB(); cmGlobalNinjaGenerator::WriteBuild(this->GetBuildFileStream(), comment, diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index 2986844..f9270a2 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -38,6 +38,7 @@ public: virtual void Generate() = 0; + std::string GetTargetPDB() const; std::string GetTargetName() const; protected: -- cgit v0.12