summaryrefslogtreecommitdiffstats
path: root/Source/cmAddLibraryCommand.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmAddLibraryCommand.cxx')
-rw-r--r--Source/cmAddLibraryCommand.cxx24
1 files changed, 8 insertions, 16 deletions
diff --git a/Source/cmAddLibraryCommand.cxx b/Source/cmAddLibraryCommand.cxx
index 9406a35..3896722 100644
--- a/Source/cmAddLibraryCommand.cxx
+++ b/Source/cmAddLibraryCommand.cxx
@@ -109,12 +109,11 @@ bool cmAddLibraryCommand
return false;
}
- // Check for an existing target with this name.
- cmTarget* existing = this->Makefile->FindTargetToUse(libName.c_str());
+ // Handle imported target creation.
if(importTarget)
{
// Make sure the target does not already exist.
- if(existing)
+ if(this->Makefile->FindTargetToUse(libName.c_str()))
{
cmOStringStream e;
e << "cannot create imported target \"" << libName
@@ -127,20 +126,13 @@ bool cmAddLibraryCommand
this->Makefile->AddImportedTarget(libName.c_str(), type);
return true;
}
- else
+
+ // Enforce name uniqueness.
+ std::string msg;
+ if(!this->Makefile->EnforceUniqueName(libName, msg))
{
- // Make sure the target does not conflict with an imported target.
- // This should really enforce global name uniqueness for targets
- // built within the project too, but that may break compatiblity
- // with projects in which it was accidentally working.
- if(existing && existing->IsImported())
- {
- cmOStringStream e;
- e << "cannot create target \"" << libName
- << "\" because an imported target with the same name already exists.";
- this->SetError(e.str().c_str());
- return false;
- }
+ this->SetError(msg.c_str());
+ return false;
}
if (s == args.end())