Populate the ExportedTargets member early in GenerateMainFile
The member variable is checked to determine whether to call HandleMissingTarget(). As that could be called during the loop in the comming commits, ensure that it contains all targets being exported.
This commit is contained in:
parent
c67b8124f7
commit
f5b1980fb2
|
@ -22,6 +22,7 @@ cmExportBuildFileGenerator::cmExportBuildFileGenerator()
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os)
|
bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os)
|
||||||
{
|
{
|
||||||
|
std::vector<cmTarget*> allTargets;
|
||||||
{
|
{
|
||||||
std::string expectedTargets;
|
std::string expectedTargets;
|
||||||
std::string sep;
|
std::string sep;
|
||||||
|
@ -31,20 +32,10 @@ bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os)
|
||||||
{
|
{
|
||||||
expectedTargets += sep + this->Namespace + (*tei)->GetName();
|
expectedTargets += sep + this->Namespace + (*tei)->GetName();
|
||||||
sep = " ";
|
sep = " ";
|
||||||
}
|
|
||||||
|
|
||||||
this->GenerateExpectedTargetsCode(os, expectedTargets);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create all the imported targets.
|
|
||||||
for(std::vector<cmTarget*>::const_iterator
|
|
||||||
tei = this->Exports->begin();
|
|
||||||
tei != this->Exports->end(); ++tei)
|
|
||||||
{
|
|
||||||
cmTarget* te = *tei;
|
cmTarget* te = *tei;
|
||||||
if(this->ExportedTargets.insert(te).second)
|
if(this->ExportedTargets.insert(te).second)
|
||||||
{
|
{
|
||||||
this->GenerateImportTargetCode(os, te);
|
allTargets.push_back(te);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -58,6 +49,18 @@ bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->GenerateExpectedTargetsCode(os, expectedTargets);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create all the imported targets.
|
||||||
|
for(std::vector<cmTarget*>::const_iterator
|
||||||
|
tei = allTargets.begin();
|
||||||
|
tei != allTargets.end(); ++tei)
|
||||||
|
{
|
||||||
|
cmTarget* te = *tei;
|
||||||
|
this->GenerateImportTargetCode(os, te);
|
||||||
|
}
|
||||||
|
|
||||||
// Generate import file content for each configuration.
|
// Generate import file content for each configuration.
|
||||||
for(std::vector<std::string>::const_iterator
|
for(std::vector<std::string>::const_iterator
|
||||||
ci = this->Configurations.begin();
|
ci = this->Configurations.begin();
|
||||||
|
|
|
@ -39,6 +39,7 @@ std::string cmExportInstallFileGenerator::GetConfigImportFileGlob()
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
|
bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
|
||||||
{
|
{
|
||||||
|
std::vector<cmTarget*> allTargets;
|
||||||
{
|
{
|
||||||
std::string expectedTargets;
|
std::string expectedTargets;
|
||||||
std::string sep;
|
std::string sep;
|
||||||
|
@ -48,20 +49,10 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
|
||||||
{
|
{
|
||||||
expectedTargets += sep + this->Namespace + (*tei)->Target->GetName();
|
expectedTargets += sep + this->Namespace + (*tei)->Target->GetName();
|
||||||
sep = " ";
|
sep = " ";
|
||||||
}
|
|
||||||
|
|
||||||
this->GenerateExpectedTargetsCode(os, expectedTargets);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create all the imported targets.
|
|
||||||
for(std::vector<cmTargetExport*>::const_iterator
|
|
||||||
tei = this->IEGen->GetExportSet()->GetTargetExports()->begin();
|
|
||||||
tei != this->IEGen->GetExportSet()->GetTargetExports()->end(); ++tei)
|
|
||||||
{
|
|
||||||
cmTargetExport const* te = *tei;
|
cmTargetExport const* te = *tei;
|
||||||
if(this->ExportedTargets.insert(te->Target).second)
|
if(this->ExportedTargets.insert(te->Target).second)
|
||||||
{
|
{
|
||||||
this->GenerateImportTargetCode(os, te->Target);
|
allTargets.push_back(te->Target);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -75,6 +66,18 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->GenerateExpectedTargetsCode(os, expectedTargets);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create all the imported targets.
|
||||||
|
for(std::vector<cmTarget*>::const_iterator
|
||||||
|
tei = allTargets.begin();
|
||||||
|
tei != allTargets.end(); ++tei)
|
||||||
|
{
|
||||||
|
cmTarget* te = *tei;
|
||||||
|
this->GenerateImportTargetCode(os, te);
|
||||||
|
}
|
||||||
|
|
||||||
// Now load per-configuration properties for them.
|
// Now load per-configuration properties for them.
|
||||||
os << "# Load information for each installed configuration.\n"
|
os << "# Load information for each installed configuration.\n"
|
||||||
<< "GET_FILENAME_COMPONENT(_DIR \"${CMAKE_CURRENT_LIST_FILE}\" PATH)\n"
|
<< "GET_FILENAME_COMPONENT(_DIR \"${CMAKE_CURRENT_LIST_FILE}\" PATH)\n"
|
||||||
|
|
Loading…
Reference in New Issue