diff options
author | Sebastien Barre <sebastien.barre@kitware.com> | 2001-11-08 19:34:51 (GMT) |
---|---|---|
committer | Sebastien Barre <sebastien.barre@kitware.com> | 2001-11-08 19:34:51 (GMT) |
commit | e17724279ea57a004551cf5214f913da424ed5f0 (patch) | |
tree | bd974a3b5c23474a418f8829b68f238a89eacebe /Source/cmAddCustomCommandCommand.cxx | |
parent | 9ad598a9f05a66a53580ab94ab1ef7c1b2a36c81 (diff) | |
download | CMake-e17724279ea57a004551cf5214f913da424ed5f0.zip CMake-e17724279ea57a004551cf5214f913da424ed5f0.tar.gz CMake-e17724279ea57a004551cf5214f913da424ed5f0.tar.bz2 |
Fix number of params and expand vars in all args
Diffstat (limited to 'Source/cmAddCustomCommandCommand.cxx')
-rw-r--r-- | Source/cmAddCustomCommandCommand.cxx | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/Source/cmAddCustomCommandCommand.cxx b/Source/cmAddCustomCommandCommand.cxx index 5cb01a7..f3ecc93 100644 --- a/Source/cmAddCustomCommandCommand.cxx +++ b/Source/cmAddCustomCommandCommand.cxx @@ -19,54 +19,69 @@ // cmAddCustomCommandCommand bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& argsIn) { - if (argsIn.size()< 9) + if (argsIn.size() < 6) { this->SetError("called with wrong number of arguments."); return false; } + std::vector<std::string> args = argsIn; - std::vector<std::string> commandArgs; - std::vector<std::string> depends; - std::vector<std::string> outputs; - const char* source = args[0].c_str(); - const char* command = args[1].c_str(); if(args[2] != "ARGS") { this->SetError("Wrong syntax. The third argument should be ARGS"); return false; } int cc=3; + + std::vector<std::string> commandArgs; while(args[cc] != "DEPENDS" && cc < argsIn.size()) { + m_Makefile->ExpandVariablesInString(args[cc]); commandArgs.push_back(args[cc]); cc++; } + if(cc == argsIn.size()-1) { this->SetError("Wrong syntax. Missing DEPENDS."); return false; } - cc ++ ; // Skip DEPENDS + cc++ ; // Skip DEPENDS + + std::vector<std::string> depends; while(args[cc] != "OUTPUTS" && cc < argsIn.size()) { + m_Makefile->ExpandVariablesInString(args[cc]); depends.push_back(args[cc]); cc++; } + if(cc == argsIn.size()-1) { this->SetError("Wrong syntax. Missing OUTPUTS."); return false; } cc ++; // Skip OUTPUTS + + std::vector<std::string> outputs; while(cc < argsIn.size()-1) { + m_Makefile->ExpandVariablesInString(args[cc]); outputs.push_back(args[cc]); cc++; } - const char *target = args[argsIn.size()-1].c_str(); - m_Makefile->AddCustomCommand( source, command, commandArgs, - depends, outputs, target ); + + m_Makefile->ExpandVariablesInString(args[0]); + m_Makefile->ExpandVariablesInString(args[1]); + m_Makefile->ExpandVariablesInString(args[argsIn.size()-1]); + + m_Makefile->AddCustomCommand(args[0].c_str(), + args[1].c_str(), + commandArgs, + depends, + outputs, + args[argsIn.size()-1].c_str()); return true; } |