cmCustomCommand: Return std::string from GetWorkingDirectory

This commit is contained in:
Brad King 2014-03-10 13:53:57 -04:00
parent cb8f87f622
commit d45e7f3461
7 changed files with 22 additions and 29 deletions

View File

@ -100,16 +100,6 @@ const std::vector<std::string>& cmCustomCommand::GetOutputs() const
return this->Outputs;
}
//----------------------------------------------------------------------------
const char* cmCustomCommand::GetWorkingDirectory() const
{
if(this->WorkingDirectory.size() == 0)
{
return 0;
}
return this->WorkingDirectory.c_str();
}
//----------------------------------------------------------------------------
const std::vector<std::string>& cmCustomCommand::GetDepends() const
{

View File

@ -42,12 +42,13 @@ public:
/** Get the output file produced by the command. */
const std::vector<std::string>& GetOutputs() const;
/** Get the working directory. */
const char* GetWorkingDirectory() const;
/** Get the vector that holds the list of dependencies. */
const std::vector<std::string>& GetDepends() const;
/** Get the working directory. */
std::string const& GetWorkingDirectory() const
{ return this->WorkingDirectory; }
/** Get the list of command lines. */
const cmCustomCommandLines& GetCommandLines() const;

View File

@ -1646,10 +1646,11 @@ void cmGlobalXCodeGenerator
cmSystemTools::ReplaceString(cmd2, "/./", "/");
cmd2 = this->ConvertToRelativeForMake(cmd2.c_str());
std::string cmd;
if(cc.GetWorkingDirectory())
std::string wd = cc.GetWorkingDirectory();
if(!wd.empty())
{
cmd += "cd ";
cmd += this->ConvertToRelativeForMake(cc.GetWorkingDirectory());
cmd += this->ConvertToRelativeForMake(wd.c_str());
cmd += " && ";
}
cmd += cmd2;

View File

@ -364,8 +364,8 @@ void cmLocalNinjaGenerator::AppendCustomCommandLines(const cmCustomCommand *cc,
{
cmCustomCommandGenerator ccg(*cc, this->GetConfigName(), this->Makefile);
if (ccg.GetNumberOfCommands() > 0) {
const char* wd = cc->GetWorkingDirectory();
if (!wd)
std::string wd = cc->GetWorkingDirectory();
if (wd.empty())
wd = this->GetMakefile()->GetStartOutputDirectory();
cmOStringStream cdCmd;
@ -491,7 +491,7 @@ std::string cmLocalNinjaGenerator::MakeCustomLauncher(
if(!outputs.empty())
{
RelativeRoot relative_root =
cc.GetWorkingDirectory() ? NONE : START_OUTPUT;
cc.GetWorkingDirectory().empty() ? START_OUTPUT : NONE;
output = this->Convert(outputs[0], relative_root, SHELL);
}

View File

@ -1023,9 +1023,9 @@ cmLocalUnixMakefileGenerator3
}
// if the command specified a working directory use it.
const char* dir = this->Makefile->GetStartOutputDirectory();
const char* workingDir = cc.GetWorkingDirectory();
if(workingDir)
std::string dir = this->Makefile->GetStartOutputDirectory();
std::string workingDir = cc.GetWorkingDirectory();
if(!workingDir.empty())
{
dir = workingDir;
}
@ -1066,7 +1066,7 @@ cmLocalUnixMakefileGenerator3
// Convert the command to a relative path only if the current
// working directory will be the start-output directory.
bool had_slash = cmd.find("/") != cmd.npos;
if(!workingDir)
if(workingDir.empty())
{
cmd = this->Convert(cmd,START_OUTPUT);
}
@ -1079,7 +1079,8 @@ cmLocalUnixMakefileGenerator3
cmd = "./" + cmd;
}
std::string launcher =
this->MakeLauncher(cc, target, workingDir? NONE : START_OUTPUT);
this->MakeLauncher(cc, target,
workingDir.empty()? START_OUTPUT : NONE);
cmd = launcher + this->ConvertShellCommand(cmd, NONE);
ccg.AppendArguments(c, cmd);
@ -1125,7 +1126,7 @@ cmLocalUnixMakefileGenerator3
}
// Setup the proper working directory for the commands.
this->CreateCDCommand(commands1, dir, relative);
this->CreateCDCommand(commands1, dir.c_str(), relative);
// push back the custom commands
commands.insert(commands.end(), commands1.begin(), commands1.end());

View File

@ -583,7 +583,7 @@ cmLocalVisualStudio6Generator
this->Makefile->AddCustomCommandToOutput(
output, depends, no_main_dependency,
origCommand.GetCommandLines(), comment.c_str(),
origCommand.GetWorkingDirectory()))
origCommand.GetWorkingDirectory().c_str()))
{
target.AddSourceFile(outsf);
}

View File

@ -84,9 +84,9 @@ cmLocalVisualStudioGenerator
const std::string& newline_text)
{
bool useLocal = this->CustomCommandUseLocal();
const char* workingDirectory = cc.GetWorkingDirectory();
std::string workingDirectory = cc.GetWorkingDirectory();
cmCustomCommandGenerator ccg(cc, configName, this->Makefile);
RelativeRoot relativeRoot = workingDirectory? NONE : START_OUTPUT;
RelativeRoot relativeRoot = workingDirectory.empty()? START_OUTPUT : NONE;
// Avoid leading or trailing newlines.
std::string newline = "";
@ -114,7 +114,7 @@ cmLocalVisualStudioGenerator
script += "setlocal";
}
if(workingDirectory)
if(!workingDirectory.empty())
{
// Change the working directory.
script += newline;
@ -124,7 +124,7 @@ cmLocalVisualStudioGenerator
script += check_error;
// Change the working drive.
if(workingDirectory[0] && workingDirectory[1] == ':')
if(workingDirectory.size() > 1 && workingDirectory[1] == ':')
{
script += newline;
newline = newline_text;