mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
ENH: fix more space problems, you can add args to the ExecProgram command separatly now
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user