summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2008-08-19 14:28:22 (GMT)
committerBrad King <brad.king@kitware.com>2008-08-19 14:28:22 (GMT)
commit8ee5c9201568e6c98a89371f78fa7fcdb63dc962 (patch)
tree51584f4dc0d2d3b5bdc64cc49f0165038f58375b /Source
parent5264834868c9697123902d2ead8b665064f6495c (diff)
downloadCMake-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.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmMakefile.cxx19
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());
}
}
}