mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-22 14:23:10 -05:00
Autogen: Add functions to read/write a list of lists
This commit is contained in:
@@ -207,6 +207,22 @@ static void AddDefinitionEscaped(cmMakefile* makefile, const char* key,
|
||||
key, cmOutputConverter::EscapeForCMake(cmJoin(values, ";")).c_str());
|
||||
}
|
||||
|
||||
static void AddDefinitionEscaped(
|
||||
cmMakefile* makefile, const char* key,
|
||||
const std::vector<std::vector<std::string>>& lists)
|
||||
{
|
||||
std::vector<std::string> seplist;
|
||||
for (const std::vector<std::string>& list : lists) {
|
||||
std::string blist = "{";
|
||||
blist += cmJoin(list, ";");
|
||||
blist += "}";
|
||||
seplist.push_back(std::move(blist));
|
||||
}
|
||||
makefile->AddDefinition(key, cmOutputConverter::EscapeForCMake(
|
||||
cmJoin(seplist, cmQtAutoGen::listSep))
|
||||
.c_str());
|
||||
}
|
||||
|
||||
static bool AddToSourceGroup(cmMakefile* makefile, const std::string& fileName,
|
||||
cmQtAutoGen::GeneratorType genType)
|
||||
{
|
||||
|
||||
@@ -75,6 +75,43 @@ static void InfoGet(cmMakefile* makefile, const char* key,
|
||||
cmSystemTools::ExpandListArgument(makefile->GetSafeDefinition(key), list);
|
||||
}
|
||||
|
||||
static std::vector<std::string> InfoGetList(cmMakefile* makefile,
|
||||
const char* key)
|
||||
{
|
||||
std::vector<std::string> list;
|
||||
cmSystemTools::ExpandListArgument(makefile->GetSafeDefinition(key), list);
|
||||
return list;
|
||||
}
|
||||
|
||||
static std::vector<std::vector<std::string>> InfoGetLists(cmMakefile* makefile,
|
||||
const char* key)
|
||||
{
|
||||
std::vector<std::vector<std::string>> lists;
|
||||
{
|
||||
const std::string value = makefile->GetSafeDefinition(key);
|
||||
std::string::size_type pos = 0;
|
||||
while (pos < value.size()) {
|
||||
std::string::size_type next = value.find(cmQtAutoGen::listSep, pos);
|
||||
std::string::size_type length =
|
||||
(next != std::string::npos) ? next - pos : value.size() - pos;
|
||||
// Remove enclosing braces
|
||||
if (length >= 2) {
|
||||
std::string::const_iterator itBeg = value.begin() + (pos + 1);
|
||||
std::string::const_iterator itEnd = itBeg + (length - 2);
|
||||
{
|
||||
std::string subValue(itBeg, itEnd);
|
||||
std::vector<std::string> list;
|
||||
cmSystemTools::ExpandListArgument(subValue, list);
|
||||
lists.push_back(std::move(list));
|
||||
}
|
||||
}
|
||||
pos += length;
|
||||
pos += cmQtAutoGen::listSep.size();
|
||||
}
|
||||
}
|
||||
return lists;
|
||||
}
|
||||
|
||||
static void InfoGetConfig(cmMakefile* makefile, const char* key,
|
||||
const std::string& config, std::string& value)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user