diff options
author | Brad King <brad.king@kitware.com> | 2008-08-19 14:28:22 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2008-08-19 14:28:22 (GMT) |
commit | 8ee5c9201568e6c98a89371f78fa7fcdb63dc962 (patch) | |
tree | 51584f4dc0d2d3b5bdc64cc49f0165038f58375b | |
parent | 5264834868c9697123902d2ead8b665064f6495c (diff) | |
download | CMake-8ee5c9201568e6c98a89371f78fa7fcdb63dc962.zip CMake-8ee5c9201568e6c98a89371f78fa7fcdb63dc962.tar.gz CMake-8ee5c9201568e6c98a89371f78fa7fcdb63dc962.tar.bz2 |
BUG: Linking to modules is for 2.2 compat only
The compatibility check to allow linking to modules should test for
CMake 2.2, not the unreleased 2.3. See issue #7500. Furthermore, the
message should be more clear about fixing the code instead of setting
CMAKE_BACKWARDS_COMPATIBILITY unless one is just trying to build an
existing project.
-rw-r--r-- | Source/cmMakefile.cxx | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 5e9a640..102ca44 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1222,24 +1222,27 @@ void cmMakefile::AddLinkLibraryForTarget(const char *target, if(tgt) { // CMake versions below 2.4 allowed linking to modules. - bool allowModules = this->NeedBackwardsCompatibility(2,3); + bool allowModules = this->NeedBackwardsCompatibility(2,2); // if it is not a static or shared library then you can not link to it if(!((tgt->GetType() == cmTarget::STATIC_LIBRARY) || (tgt->GetType() == cmTarget::SHARED_LIBRARY) || tgt->IsExecutableWithExports())) { cmOStringStream e; - e << "Attempt to add link target " << lib << " of type: " + e << "Target \"" << lib << "\" of type " << cmTarget::TargetTypeNames[static_cast<int>(tgt->GetType())] - << "\nto target " << target - << ". One can only link to STATIC or SHARED libraries, or " + << " may not be linked into another target. " + << "One may link only to STATIC or SHARED libraries, or " << "to executables with the ENABLE_EXPORTS property set."; // in older versions of cmake linking to modules was allowed if( tgt->GetType() == cmTarget::MODULE_LIBRARY ) { - e << - "\nTo allow linking of modules set " - "CMAKE_BACKWARDS_COMPATIBILITY to 2.2 or lower\n"; + e << "\n" + << "If you are developing a new project, re-organize it to avoid " + << "linking to modules. " + << "If you are just trying to build an existing project, " + << "set CMAKE_BACKWARDS_COMPATIBILITY to 2.2 or lower to allow " + << "linking to modules."; } // if no modules are allowed then this is always an error if(!allowModules || @@ -1247,7 +1250,7 @@ void cmMakefile::AddLinkLibraryForTarget(const char *target, // still an error (allowModules && tgt->GetType() != cmTarget::MODULE_LIBRARY)) { - cmSystemTools::Error(e.str().c_str()); + this->IssueMessage(cmake::FATAL_ERROR, e.str().c_str()); } } } |