diff options
-rw-r--r-- | Source/cmMakefileTargetGenerator.cxx | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index d4c61cc..e780219 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -792,6 +792,37 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() *this->InfoFileStream << " )\n\n"; } + // Store list of targets linked directly or transitively. + { + *this->InfoFileStream + << "\n" + << "# Targets to which this target links.\n" + << "SET(CMAKE_TARGET_LINKED_INFO_FILES\n"; + cmGlobalGenerator* gg = this->GlobalGenerator; + std::set<cmTarget const*> emitted; + cmTarget::LinkLibraryVectorType const& libs = + this->Target->GetLinkLibraries(); + for(cmTarget::LinkLibraryVectorType::const_iterator j = libs.begin(); + j != libs.end(); ++j) + { + if(cmTarget const* linkee = gg->FindTarget(0, j->first.c_str(), false)) + { + if(emitted.insert(linkee).second) + { + cmMakefile* mf = linkee->GetMakefile(); + cmLocalGenerator* lg = mf->GetLocalGenerator(); + std::string di = mf->GetStartOutputDirectory(); + di += "/"; + di += lg->GetTargetDirectory(*linkee); + di += "/DependInfo.cmake"; + *this->InfoFileStream << " \"" << di << "\"\n"; + } + } + } + *this->InfoFileStream + << " )\n"; + } + // and now write the rule to use it std::vector<std::string> depends; std::vector<std::string> commands; |