diff options
author | Sebastian Holtermann <sebholt@xwmw.org> | 2017-09-07 09:55:52 (GMT) |
---|---|---|
committer | Sebastian Holtermann <sebholt@xwmw.org> | 2017-09-09 07:44:55 (GMT) |
commit | 1e6569c9f4614b3d915653bab2fd423c99d814d6 (patch) | |
tree | 7c8980e81f9805782ae75167c7aaf876bc0d999d | |
parent | 3e8b3e94dc6d3ea59dd437f1ea46786f9f0ec1d2 (diff) | |
download | CMake-1e6569c9f4614b3d915653bab2fd423c99d814d6.zip CMake-1e6569c9f4614b3d915653bab2fd423c99d814d6.tar.gz CMake-1e6569c9f4614b3d915653bab2fd423c99d814d6.tar.bz2 |
cmMakefile: Add GetOrCreateSourceGroup methods
-rw-r--r-- | Source/cmMakefile.cxx | 21 | ||||
-rw-r--r-- | Source/cmMakefile.h | 12 |
2 files changed, 33 insertions, 0 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 24c2de2..c9dc93c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -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 diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 31ae229..398604d 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -475,6 +475,18 @@ public: 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 */ cmSourceGroup* FindSourceGroup(const char* source, |