ENH: add a check to make sure targets only link to libraries and not utility targets to avoid seg faults, bug 3194
This commit is contained in:
parent
d5d1525339
commit
a468872ccd
|
@ -804,6 +804,21 @@ void cmMakefile::AddLinkLibraryForTarget(const char *target,
|
|||
cmTargets::iterator i = this->Targets.find(target);
|
||||
if ( i != this->Targets.end())
|
||||
{
|
||||
cmTarget* tgt =
|
||||
this->GetCMakeInstance()->GetGlobalGenerator()->FindTarget(0, lib);
|
||||
if(tgt)
|
||||
{
|
||||
// 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)))
|
||||
{
|
||||
cmOStringStream e;
|
||||
e << "Attempt to add link library " << lib
|
||||
<< " which is not a library target to target " << tgt->GetType() << " " <<
|
||||
target << "\n";
|
||||
cmSystemTools::Error(e.str().c_str());
|
||||
}
|
||||
}
|
||||
i->second.AddLinkLibrary( *this, target, lib, llt );
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue