|
|
@@ -144,6 +144,9 @@ void cmGlobalUnixMakefileGenerator3::WriteMainMakefile()
|
|
|
|
|
|
this->WriteAllRules(lg,makefileStream);
|
|
|
|
|
|
+ // Keep track of targets already listed.
|
|
|
+ std::set<cmStdString> emittedTargets;
|
|
|
+
|
|
|
// write the target convenience rules
|
|
|
unsigned int i;
|
|
|
for (i = 0; i < m_LocalGenerators.size(); ++i)
|
|
|
@@ -161,7 +164,7 @@ void cmGlobalUnixMakefileGenerator3::WriteMainMakefile()
|
|
|
}
|
|
|
lg3 = lg3->GetParent();
|
|
|
}
|
|
|
- this->WriteConvenienceRules(makefileStream,lg,exclude);
|
|
|
+ this->WriteConvenienceRules(makefileStream,lg,emittedTargets);
|
|
|
}
|
|
|
|
|
|
this->WriteHelpRule(makefileStream);
|
|
|
@@ -687,11 +690,8 @@ void
|
|
|
cmGlobalUnixMakefileGenerator3
|
|
|
::WriteConvenienceRules(std::ostream& ruleFileStream,
|
|
|
cmLocalUnixMakefileGenerator3 *lg,
|
|
|
- bool /* exclude */)
|
|
|
+ std::set<cmStdString> &emitted)
|
|
|
{
|
|
|
- // Keep track of targets already listed.
|
|
|
- std::set<cmStdString> emitted;
|
|
|
-
|
|
|
std::vector<std::string> depends;
|
|
|
std::vector<std::string> commands;
|
|
|
|
|
|
@@ -936,26 +936,31 @@ cmGlobalUnixMakefileGenerator3::WriteHelpRule(std::ostream& ruleFileStream)
|
|
|
lg->AppendEcho(commands,"... install");
|
|
|
lg->AppendEcho(commands,"... rebuild_cache");
|
|
|
|
|
|
+ // Keep track of targets already listed.
|
|
|
+ std::set<cmStdString> emittedTargets;
|
|
|
+
|
|
|
// for each local generator
|
|
|
unsigned int i;
|
|
|
for (i = 0; i < m_LocalGenerators.size(); ++i)
|
|
|
{
|
|
|
lg = static_cast<cmLocalUnixMakefileGenerator3 *>(m_LocalGenerators[i]);
|
|
|
-
|
|
|
|
|
|
// for each target Generate the rule files for each target.
|
|
|
const cmTargets& targets = lg->GetMakefile()->GetTargets();
|
|
|
for(cmTargets::const_iterator t = targets.begin(); t != targets.end(); ++t)
|
|
|
{
|
|
|
if((t->second.GetType() == cmTarget::EXECUTABLE) ||
|
|
|
- (t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
|
|
|
- (t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
|
|
|
- (t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
|
|
|
- (t->second.GetType() == cmTarget::UTILITY))
|
|
|
+ (t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
|
|
|
+ (t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
|
|
|
+ (t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
|
|
|
+ (t->second.GetType() == cmTarget::UTILITY))
|
|
|
{
|
|
|
- path = "... ";
|
|
|
- path += t->second.GetName();
|
|
|
- lg->AppendEcho(commands,path.c_str());
|
|
|
+ if(emittedTargets.insert(t->second.GetName()).second)
|
|
|
+ {
|
|
|
+ path = "... ";
|
|
|
+ path += t->second.GetName();
|
|
|
+ lg->AppendEcho(commands,path.c_str());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|