diff options
author | Brad King <brad.king@kitware.com> | 2004-03-04 15:05:14 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2004-03-04 15:05:14 (GMT) |
commit | 4990e1481d378e89a0d07d1a25d882a38530db31 (patch) | |
tree | a1fae72b8f0e2c723d47ee06844e71eff8e61a75 /Source/cmStringCommand.cxx | |
parent | 1dd718457fe1d410314d9443fa5d82462c5ae8ea (diff) | |
download | CMake-4990e1481d378e89a0d07d1a25d882a38530db31.zip CMake-4990e1481d378e89a0d07d1a25d882a38530db31.tar.gz CMake-4990e1481d378e89a0d07d1a25d882a38530db31.tar.bz2 |
ENH: Added STRING(CONFIGURE ...) command.
Diffstat (limited to 'Source/cmStringCommand.cxx')
-rw-r--r-- | Source/cmStringCommand.cxx | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx index 6acb72c..76d60e0 100644 --- a/Source/cmStringCommand.cxx +++ b/Source/cmStringCommand.cxx @@ -49,6 +49,10 @@ bool cmStringCommand::InitialPass(std::vector<std::string> const& args) { return this->HandleAsciiCommand(args); } + else if(subCommand == "CONFIGURE") + { + return this->HandleConfigureCommand(args); + } std::string e = "does not recognize sub-command "+subCommand; this->SetError(e.c_str()); @@ -115,6 +119,53 @@ bool cmStringCommand::HandleAsciiCommand(std::vector<std::string> const& args) } //---------------------------------------------------------------------------- +bool cmStringCommand::HandleConfigureCommand( + std::vector<std::string> const& args) +{ + if ( args.size() < 2 ) + { + this->SetError("No input string specified."); + return false; + } + else if ( args.size() < 3 ) + { + this->SetError("No output variable specified."); + return false; + } + + // Parse options. + bool escapeQuotes = false; + bool atOnly = false; + for(unsigned int i = 3; i < args.size(); ++i) + { + if(args[i] == "@ONLY") + { + atOnly = true; + } + else if(args[i] == "ESCAPE_QUOTES") + { + escapeQuotes = true; + } + else + { + cmOStringStream err; + err << "Unrecognized argument \"" << args[i] << "\""; + this->SetError(err.str().c_str()); + return false; + } + } + + // Configure the string. + std::string output; + m_Makefile->ConfigureString(args[1], output, atOnly, escapeQuotes); + + // Store the output in the provided variable. + m_Makefile->AddDefinition(args[2].c_str(), output.c_str()); + + return true; +} + +//---------------------------------------------------------------------------- bool cmStringCommand::HandleRegexCommand(std::vector<std::string> const& args) { if(args.size() < 2) |