cmMakefile: Add GetOrCreateSourceGroup methods

This commit is contained in:
Sebastian Holtermann
2017-09-07 11:55:52 +02:00
parent 3e8b3e94dc
commit 1e6569c9f4
2 changed files with 33 additions and 0 deletions

View File

@@ -2010,6 +2010,27 @@ void cmMakefile::AddSourceGroup(const std::vector<std::string>& name,
sg->SetGroupRegex(regex);
}
cmSourceGroup* cmMakefile::GetOrCreateSourceGroup(
const std::vector<std::string>& folders)
{
cmSourceGroup* sg = this->GetSourceGroup(folders);
if (sg == nullptr) {
this->AddSourceGroup(folders);
sg = this->GetSourceGroup(folders);
}
return sg;
}
cmSourceGroup* cmMakefile::GetOrCreateSourceGroup(const std::string& name)
{
const char* delimiter = this->GetDefinition("SOURCE_GROUP_DELIMITER");
if (delimiter == nullptr) {
delimiter = "\\";
}
return this->GetOrCreateSourceGroup(
cmSystemTools::tokenize(name, delimiter));
}
/**
* Find a source group whose regular expression matches the filename
* part of the given source name. Search backward through the list of

View File

@@ -474,6 +474,18 @@ public:
void AddSourceGroup(const std::vector<std::string>& name,
const char* regex = nullptr);
/**
* Get and existing or create a new source group.
*/
cmSourceGroup* GetOrCreateSourceGroup(
const std::vector<std::string>& folders);
/**
* Get and existing or create a new source group.
* The name will be tokenized.
*/
cmSourceGroup* GetOrCreateSourceGroup(const std::string& name);
/**
* find what source group this source is in
*/