diff options
author | Alex Neundorf <neundorf@kde.org> | 2012-09-28 19:47:37 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2012-09-30 14:26:10 (GMT) |
commit | 0cfd055acda3543d66690b5e92d8ee7c20e0654f (patch) | |
tree | f034d09d81d1c9a0c7f4203cb87d1d3db667046e /Source/cmExportFileGenerator.cxx | |
parent | 190f2c8253910a9e6870948df58a87950e7b4185 (diff) | |
download | CMake-0cfd055acda3543d66690b5e92d8ee7c20e0654f.zip CMake-0cfd055acda3543d66690b5e92d8ee7c20e0654f.tar.gz CMake-0cfd055acda3543d66690b5e92d8ee7c20e0654f.tar.bz2 |
exports: move the handling of missing targets into subclasses
Before, cmExportFileGenerator::ComplainAboutMissingTarget() was a virtual
function which had to be implemented in the subclasses. It is not
anymore. Instead, there is now a virtual function
HandleMissingTargets(), which is implemented in the two subclasses.
This makes e.g. dealing correctly with APPEND mode easier.
Alex
Diffstat (limited to 'Source/cmExportFileGenerator.cxx')
-rw-r--r-- | Source/cmExportFileGenerator.cxx | 66 |
1 files changed, 1 insertions, 65 deletions
diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index dc4fa31..5d95668 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -233,30 +233,7 @@ cmExportFileGenerator } else { - std::vector<std::string> namespaces = this->FindNamespaces(mf, *li); - int targetOccurrences = (int)namespaces.size(); - - if (targetOccurrences == 1) - { - std::string missingTarget = namespaces[0]; - missingTarget += *li; - link_libs += missingTarget; - missingTargets.push_back(missingTarget); - } - else - { - // The target is not in the export. - if(!this->AppendMode) - { - // We are not appending, so all exported targets should be - // known here. This is probably user-error. - this->ComplainAboutMissingTarget(target, tgt, targetOccurrences); - } - // Assume the target will be exported by another command. - // Append it with the export namespace. - link_libs += this->Namespace; - link_libs += *li; - } + this->HandleMissingTarget(link_libs, missingTargets, mf, target, tgt); } } else @@ -274,47 +251,6 @@ cmExportFileGenerator //---------------------------------------------------------------------------- -std::vector<std::string> cmExportFileGenerator::FindNamespaces(cmMakefile* mf, - const std::string& name) -{ - std::vector<std::string> namespaces; - cmGlobalGenerator* gg = mf->GetLocalGenerator()->GetGlobalGenerator(); - const cmExportSetMap& exportSets = gg->GetExportSets(); - - for(cmExportSetMap::const_iterator expIt = exportSets.begin(); - expIt != exportSets.end(); - ++expIt) - { - const cmExportSet* exportSet = expIt->second; - std::vector<cmTargetExport*> const* targets = - exportSet->GetTargetExports(); - - bool containsTarget = false; - for(unsigned int i=0; i<targets->size(); i++) - { - if (name == (*targets)[i]->Target->GetName()) - { - containsTarget = true; - break; - } - } - - if (containsTarget) - { - std::vector<cmInstallExportGenerator const*> const* installs = - exportSet->GetInstallations(); - for(unsigned int i=0; i<installs->size(); i++) - { - namespaces.push_back((*installs)[i]->GetNamespace()); - } - } - } - - return namespaces; -} - - -//---------------------------------------------------------------------------- void cmExportFileGenerator::GenerateImportHeaderCode(std::ostream& os, const char* config) { |