cmMakefile: Split out CreateNewTarget from AddNewTarget

`CreateNewTarget` tells whether the target is inserted or not.
This commit is contained in:
NAKAMURA Takumi 2021-07-08 23:10:06 +09:00 committed by Brad King
parent 16d9c317a3
commit 854dcb0d01
2 changed files with 19 additions and 6 deletions

View File

@ -2118,15 +2118,23 @@ cmTarget* cmMakefile::AddExecutable(const std::string& exeName,
cmTarget* cmMakefile::AddNewTarget(cmStateEnums::TargetType type,
const std::string& name)
{
auto it = this->Targets
.emplace(name,
cmTarget(name, type, cmTarget::VisibilityNormal, this,
cmTarget::PerConfig::Yes))
.first;
return &this->CreateNewTarget(name, type).first;
}
std::pair<cmTarget&, bool> cmMakefile::CreateNewTarget(
const std::string& name, cmStateEnums::TargetType type,
cmTarget::PerConfig perConfig)
{
auto ib = this->Targets.emplace(
name, cmTarget(name, type, cmTarget::VisibilityNormal, this, perConfig));
auto it = ib.first;
if (!ib.second) {
return std::make_pair(std::ref(it->second), false);
}
this->OrderedTargets.push_back(&it->second);
this->GetGlobalGenerator()->IndexTarget(&it->second);
this->GetStateSnapshot().GetDirectory().AddNormalTargetName(name);
return &it->second;
return std::make_pair(std::ref(it->second), true);
}
cmTarget* cmMakefile::AddNewUtilityTarget(const std::string& utilityName,

View File

@ -13,6 +13,7 @@
#include <stack>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
#include <cm/optional>
@ -230,6 +231,10 @@ public:
cmTarget* AddImportedTarget(const std::string& name,
cmStateEnums::TargetType type, bool global);
std::pair<cmTarget&, bool> CreateNewTarget(
const std::string& name, cmStateEnums::TargetType type,
cmTarget::PerConfig perConfig = cmTarget::PerConfig::Yes);
cmTarget* AddNewTarget(cmStateEnums::TargetType type,
const std::string& name);