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/cmExportBuildFileGenerator.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/cmExportBuildFileGenerator.cxx')
-rw-r--r-- | Source/cmExportBuildFileGenerator.cxx | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/Source/cmExportBuildFileGenerator.cxx b/Source/cmExportBuildFileGenerator.cxx index 22ae0e4..fb3f39f 100644 --- a/Source/cmExportBuildFileGenerator.cxx +++ b/Source/cmExportBuildFileGenerator.cxx @@ -135,10 +135,28 @@ cmExportBuildFileGenerator //---------------------------------------------------------------------------- void +cmExportBuildFileGenerator::HandleMissingTarget( + std::string& link_libs, std::vector<std::string>&, + cmMakefile*, cmTarget* depender, cmTarget* dependee) +{ + // 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(depender, dependee); + } + // Assume the target will be exported by another command. + // Append it with the export namespace. + link_libs += this->Namespace; + link_libs += dependee->GetName(); +} + +//---------------------------------------------------------------------------- +void cmExportBuildFileGenerator ::ComplainAboutMissingTarget(cmTarget* depender, - cmTarget* dependee, - int occurrences) + cmTarget* dependee) { if(!this->ExportCommand || !this->ExportCommand->ErrorMessage.empty()) { @@ -146,20 +164,10 @@ cmExportBuildFileGenerator } cmOStringStream e; - if (occurrences == 0) - { - e << "called with target \"" << depender->GetName() - << "\" which requires target \"" << dependee->GetName() - << "\" that is not in the export list.\n" - << "If the required target is not easy to reference in this call, " - << "consider using the APPEND option with multiple separate calls."; - } - else - { - e << "called with target \"" << depender->GetName() - << "\" which requires target \"" << dependee->GetName() - << "\" that is exported " << occurrences << " times in other " - << "export ""lists.\n"; - } + e << "called with target \"" << depender->GetName() + << "\" which requires target \"" << dependee->GetName() + << "\" that is not in the export list.\n" + << "If the required target is not easy to reference in this call, " + << "consider using the APPEND option with multiple separate calls."; this->ExportCommand->ErrorMessage = e.str(); } |