|
|
@ -68,6 +68,9 @@ bool cmStringCommand::InitialPass(std::vector<std::string> const& args, |
|
|
|
if (subCommand == "CONCAT") { |
|
|
|
return this->HandleConcatCommand(args); |
|
|
|
} |
|
|
|
if (subCommand == "JOIN") { |
|
|
|
return this->HandleJoinCommand(args); |
|
|
|
} |
|
|
|
if (subCommand == "SUBSTRING") { |
|
|
|
return this->HandleSubstringCommand(args); |
|
|
|
} |
|
|
@ -677,8 +680,26 @@ bool cmStringCommand::HandleConcatCommand(std::vector<std::string> const& args) |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
std::string const& variableName = args[1]; |
|
|
|
std::string value = cmJoin(cmMakeRange(args).advance(2), std::string()); |
|
|
|
return this->joinImpl(args, std::string(), 1); |
|
|
|
} |
|
|
|
|
|
|
|
bool cmStringCommand::HandleJoinCommand(std::vector<std::string> const& args) |
|
|
|
{ |
|
|
|
if (args.size() < 3) { |
|
|
|
this->SetError("sub-command JOIN requires at least two arguments."); |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
return this->joinImpl(args, args[1], 2); |
|
|
|
} |
|
|
|
|
|
|
|
bool cmStringCommand::joinImpl(std::vector<std::string> const& args, |
|
|
|
std::string const& glue, const size_t varIdx) |
|
|
|
{ |
|
|
|
std::string const& variableName = args[varIdx]; |
|
|
|
// NOTE Items to concat/join placed right after the variable for
|
|
|
|
// both `CONCAT` and `JOIN` sub-commands.
|
|
|
|
std::string value = cmJoin(cmMakeRange(args).advance(varIdx + 1), glue); |
|
|
|
|
|
|
|
this->Makefile->AddDefinition(variableName, value.c_str()); |
|
|
|
return true; |
|
|
|