ALIAS target: cannot overwrite an existing target

Fixes: #19616
This commit is contained in:
Marc Chevrier
2020-05-28 14:52:57 +02:00
committed by Brad King
parent 04b9b2b5f3
commit 1eca5993e2
11 changed files with 100 additions and 1 deletions

View File

@@ -9,6 +9,7 @@
#include "cmGlobalGenerator.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
#include "cmPolicies.h"
#include "cmState.h"
#include "cmStateTypes.h"
#include "cmStringAlgorithms.h"
@@ -181,6 +182,16 @@ bool cmAddLibraryCommand(std::vector<std::string> const& args,
return false;
}
if (mf.GetPolicyStatus(cmPolicies::CMP0107) == cmPolicies::NEW) {
// Make sure the target does not already exist.
if (mf.FindTargetToUse(libName)) {
status.SetError(cmStrCat(
"cannot create ALIAS target \"", libName,
"\" because another target with the same name already exists."));
return false;
}
}
std::string const& aliasedName = *s;
if (mf.IsAlias(aliasedName)) {
status.SetError(cmStrCat("cannot create ALIAS target \"", libName,