summaryrefslogtreecommitdiff
path: root/Source/cmExecProgramCommand.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2002-04-03 16:14:06 -0500
committerBill Hoffman <bill.hoffman@kitware.com>2002-04-03 16:14:06 -0500
commitd42055b283496e3259a89db9aa9074f4169bcf34 (patch)
treea2f35c6fc56e7e313c6c091b2f4903b79d922822 /Source/cmExecProgramCommand.cxx
parent1c73117b7add8578bfe1abc3db7de754496e2453 (diff)
downloadcmake-d42055b283496e3259a89db9aa9074f4169bcf34.tar.gz
ENH: fix more space problems, you can add args to the ExecProgram command separatly now
Diffstat (limited to 'Source/cmExecProgramCommand.cxx')
-rw-r--r--Source/cmExecProgramCommand.cxx35
1 files changed, 32 insertions, 3 deletions
diff --git a/Source/cmExecProgramCommand.cxx b/Source/cmExecProgramCommand.cxx
index aea69501ab..7e1ad766b3 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;
}