diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index a69732e79..f310744e4 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -2043,20 +2043,19 @@ void cmGlobalGenerator::FillLocalGeneratorToTargetMap() clg = clg->GetParent()) { // This local generator includes the target. - std::set& targetSet = + std::set& targetSet = this->LocalGeneratorToTargetMap[clg]; - targetSet.insert(&target); + cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); + targetSet.insert(gt); // Add dependencies of the included target. An excluded // target may still be included if it is a dependency of a // non-excluded target. - cmGeneratorTarget* gt = this->GetGeneratorTarget(&target); TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(gt); for(TargetDependSet::const_iterator ti = tgtdeps.begin(); ti != tgtdeps.end(); ++ti) { - cmGeneratorTarget const* ttt = *ti; - targetSet.insert(ttt->Target); + targetSet.insert(*ti); } } } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index f86e82553..398335b6f 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -406,7 +406,7 @@ protected: cmMakefile* CurrentMakefile; // map from project name to vector of local generators in that project std::map > ProjectMap; - std::map > + std::map > LocalGeneratorToTargetMap; // Set of named installation components requested by the project. diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 412728f38..e6a67d32d 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -830,7 +830,7 @@ cmGlobalUnixMakefileGenerator3 cmLocalGenerator::FULL, cmLocalGenerator::SHELL); // - std::set emitted; + std::set emitted; progCmd << " " << this->CountProgressMarksInTarget(gtarget, emitted); commands.push_back(progCmd.str()); @@ -909,10 +909,10 @@ cmGlobalUnixMakefileGenerator3 size_t cmGlobalUnixMakefileGenerator3 ::CountProgressMarksInTarget(cmGeneratorTarget const* target, - std::set& emitted) + std::set& emitted) { size_t count = 0; - if(emitted.insert(target->Target).second) + if(emitted.insert(target).second) { count = this->ProgressMap[target->Target].Marks.size(); TargetDependSet const& depends = this->GetTargetDirectDepends(target); @@ -935,14 +935,13 @@ cmGlobalUnixMakefileGenerator3 ::CountProgressMarksInAll(cmLocalUnixMakefileGenerator3* lg) { size_t count = 0; - std::set emitted; - std::set const& targets + std::set emitted; + std::set const& targets = this->LocalGeneratorToTargetMap[lg]; - for(std::set::const_iterator t = targets.begin(); + for(std::set::const_iterator t = targets.begin(); t != targets.end(); ++t) { - cmGeneratorTarget* gt = this->GetGeneratorTarget(*t); - count += this->CountProgressMarksInTarget(gt, emitted); + count += this->CountProgressMarksInTarget(*t, emitted); } return count; } diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index 8805011df..14adf2e46 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -199,7 +199,7 @@ protected: ProgressMapType ProgressMap; size_t CountProgressMarksInTarget(cmGeneratorTarget const* target, - std::set& emitted); + std::set& emitted); size_t CountProgressMarksInAll(cmLocalUnixMakefileGenerator3* lg); cmGeneratedFileStream *CommandDatabase;