summaryrefslogtreecommitdiffstats
path: root/Source/cmAddLibraryCommand.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2008-02-11 18:35:39 (GMT)
committerBrad King <brad.king@kitware.com>2008-02-11 18:35:39 (GMT)
commitac0e58dcfbf17dec84b7bd848f6df0175f7d516b (patch)
treefd1cbb7b8fb4d6cec4fa467ea1e174b2b8535146 /Source/cmAddLibraryCommand.cxx
parent739a463539946323b09e4c22f5fdd38395add1e1 (diff)
downloadCMake-ac0e58dcfbf17dec84b7bd848f6df0175f7d516b.zip
CMake-ac0e58dcfbf17dec84b7bd848f6df0175f7d516b.tar.gz
CMake-ac0e58dcfbf17dec84b7bd848f6df0175f7d516b.tar.bz2
ENH: Enforce global target name uniqueness.
- Error if imported target is involved in conflict - Error for non-imported target conflict unless CMAKE_BACKWARDS_COMPATIBILITY <= 2.4 - Include OUTPUT_NAME property in error message - Update add_executable and add_library command documentation
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())