diff options
Diffstat (limited to 'Source/cmExecProgramCommand.cxx')
-rw-r--r-- | Source/cmExecProgramCommand.cxx | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/Source/cmExecProgramCommand.cxx b/Source/cmExecProgramCommand.cxx index aea6950..7e1ad76 100644 --- a/Source/cmExecProgramCommand.cxx +++ b/Source/cmExecProgramCommand.cxx @@ -25,16 +25,45 @@ bool cmExecProgramCommand::InitialPass(std::vector<std::string> const& args) this->SetError("called with incorrect number of arguments"); return false; } + std::string arguments; + bool doingargs = false; + int count = 0; + for(int i=0; i < args.size(); ++i) + { + if(doingargs) + { + arguments += args[i]; + arguments += " "; + count++; + } + else if(args[i] == "ARGS") + { + count++; + doingargs = true; + } + } + + std::string command; + if(arguments.size()) + { + command = cmSystemTools::ConvertToOutputPath(args[0].c_str()); + command += " "; + command += arguments; + } + else + { + command = args[0]; + } std::string output; - if(args.size() == 2) + if(args.size() - count == 2) { cmSystemTools::MakeDirectory(args[1].c_str()); - cmSystemTools::RunCommand(args[0].c_str(), output, + cmSystemTools::RunCommand(command.c_str(), output, cmSystemTools::ConvertToOutputPath(args[1].c_str()).c_str()); } else { - cmSystemTools::RunCommand(args[0].c_str(), output); + cmSystemTools::RunCommand(command.c_str(), output); } return true; } |