cmGlobalGenerator: Create local generators after all makefiles configured.

This commit is contained in:
Stephen Kelly 2015-09-13 20:36:06 +02:00
parent dd408de46b
commit c5f07e0537
3 changed files with 15 additions and 7 deletions

View File

@ -1091,6 +1091,18 @@ void cmGlobalGenerator::ClearEnabledLanguages()
return this->CMakeInstance->GetState()->ClearEnabledLanguages(); return this->CMakeInstance->GetState()->ClearEnabledLanguages();
} }
void cmGlobalGenerator::CreateLocalGenerators()
{
cmDeleteAll(this->LocalGenerators);
this->LocalGenerators.clear();
this->LocalGenerators.reserve(this->Makefiles.size());
for (std::vector<cmMakefile*>::const_iterator it = this->Makefiles.begin();
it != this->Makefiles.end(); ++it)
{
this->LocalGenerators.push_back(this->CreateLocalGenerator(*it));
}
}
void cmGlobalGenerator::Configure() void cmGlobalGenerator::Configure()
{ {
this->FirstTimeProgress = 0.0f; this->FirstTimeProgress = 0.0f;
@ -1112,8 +1124,7 @@ void cmGlobalGenerator::Configure()
// now do it // now do it
this->ConfigureDoneCMP0026 = false; this->ConfigureDoneCMP0026 = false;
dirMf->Configure(); dirMf->Configure();
this->LocalGenerators.insert(this->LocalGenerators.begin(), this->CreateLocalGenerators();
this->CreateLocalGenerator(dirMf));
dirMf->EnforceDirectoryLevelRules(); dirMf->EnforceDirectoryLevelRules();
this->ConfigureDoneCMP0026 = true; this->ConfigureDoneCMP0026 = true;

View File

@ -466,6 +466,8 @@ private:
virtual void ForceLinkerLanguages(); virtual void ForceLinkerLanguages();
void CreateLocalGenerators();
void CheckCompilerIdCompatibility(cmMakefile* mf, void CheckCompilerIdCompatibility(cmMakefile* mf,
std::string const& lang) const; std::string const& lang) const;

View File

@ -1772,11 +1772,6 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath,
{ {
this->UnConfiguredDirectories.push_back(subMf); this->UnConfiguredDirectories.push_back(subMf);
} }
// create a new local generator and set its parent
cmLocalGenerator *lg2 = this->GetGlobalGenerator()
->CreateLocalGenerator(subMf);
this->GetGlobalGenerator()->AddLocalGenerator(lg2);
} }
void cmMakefile::SetCurrentSourceDirectory(const std::string& dir) void cmMakefile::SetCurrentSourceDirectory(const std::string& dir)