diff options
author | Daniel Pfeifer <daniel@pfeifer-mail.de> | 2015-07-06 20:28:04 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2015-07-07 13:23:21 (GMT) |
commit | 2b18cdcaba48ffeee753d97d8241dbf2a8333493 (patch) | |
tree | 6f87bea38ccac379a746d349179824f802fef30e /Source | |
parent | 7e86f567aca6b913689dc2d8c17a17936284b811 (diff) | |
download | CMake-2b18cdcaba48ffeee753d97d8241dbf2a8333493.zip CMake-2b18cdcaba48ffeee753d97d8241dbf2a8333493.tar.gz CMake-2b18cdcaba48ffeee753d97d8241dbf2a8333493.tar.bz2 |
string: add APPEND subcommand
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmStringCommand.cxx | 32 | ||||
-rw-r--r-- | Source/cmStringCommand.h | 1 |
2 files changed, 33 insertions, 0 deletions
diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx index edc6afc..efc1f16 100644 --- a/Source/cmStringCommand.cxx +++ b/Source/cmStringCommand.cxx @@ -74,6 +74,10 @@ bool cmStringCommand { return this->HandleLengthCommand(args); } + else if(subCommand == "APPEND") + { + return this->HandleAppendCommand(args); + } else if(subCommand == "CONCAT") { return this->HandleConcatCommand(args); @@ -730,6 +734,34 @@ bool cmStringCommand } //---------------------------------------------------------------------------- +bool cmStringCommand::HandleAppendCommand(std::vector<std::string> const& args) +{ + if(args.size() < 2) + { + this->SetError("sub-command APPEND requires at least one argument."); + return false; + } + + // Skip if nothing to append. + if(args.size() < 3) + { + return true; + } + + const std::string& variable = args[1]; + + std::string value; + const char* oldValue = this->Makefile->GetDefinition(variable); + if(oldValue) + { + value = oldValue; + } + value += cmJoin(cmRange(args).advance(2), std::string()); + this->Makefile->AddDefinition(variable, value.c_str()); + return true; +} + +//---------------------------------------------------------------------------- bool cmStringCommand ::HandleConcatCommand(std::vector<std::string> const& args) { diff --git a/Source/cmStringCommand.h b/Source/cmStringCommand.h index 9c75095..3ed17eb 100644 --- a/Source/cmStringCommand.h +++ b/Source/cmStringCommand.h @@ -67,6 +67,7 @@ protected: bool HandleReplaceCommand(std::vector<std::string> const& args); bool HandleLengthCommand(std::vector<std::string> const& args); bool HandleSubstringCommand(std::vector<std::string> const& args); + bool HandleAppendCommand(std::vector<std::string> const& args); bool HandleConcatCommand(std::vector<std::string> const& args); bool HandleStripCommand(std::vector<std::string> const& args); bool HandleRandomCommand(std::vector<std::string> const& args); |