mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-09 07:39:47 -05:00
ENH: Store in DependInfo.cmake files a list of the corresponding files for the targets to which a target links. This is useful for locating Fortran modules provided by linked targets. See issue #5809.
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user