Merge topic 'cmGlobalGenerator-Build-output-ref'
30983ebe cmGlobalGenerator: Take Build output argument by reference
This commit is contained in:
commit
ba60ff99ed
@ -301,7 +301,7 @@ int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring)
|
||||
int retVal = cm.GetGlobalGenerator()->Build(
|
||||
this->SourceDir, this->BinaryDir,
|
||||
this->BuildProject, *tarIt,
|
||||
&output, this->BuildMakeProgram,
|
||||
output, this->BuildMakeProgram,
|
||||
config,
|
||||
!this->BuildNoClean,
|
||||
false, remainingTime);
|
||||
|
@ -489,7 +489,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv)
|
||||
targetName,
|
||||
this->SrcFileSignature,
|
||||
&cmakeFlags,
|
||||
&output);
|
||||
output);
|
||||
if ( erroroc )
|
||||
{
|
||||
cmSystemTools::SetErrorOccured();
|
||||
|
@ -1616,7 +1616,7 @@ int cmGlobalGenerator::TryCompile(const std::string& srcdir,
|
||||
const std::string& bindir,
|
||||
const std::string& projectName,
|
||||
const std::string& target, bool fast,
|
||||
std::string *output, cmMakefile *mf)
|
||||
std::string& output, cmMakefile *mf)
|
||||
{
|
||||
// if this is not set, then this is a first time configure
|
||||
// and there is a good chance that the try compile stuff will
|
||||
@ -1675,7 +1675,7 @@ void cmGlobalGenerator::GenerateBuildCommand(
|
||||
int cmGlobalGenerator::Build(
|
||||
const std::string&, const std::string& bindir,
|
||||
const std::string& projectName, const std::string& target,
|
||||
std::string *output,
|
||||
std::string& output,
|
||||
const std::string& makeCommandCSTR,
|
||||
const std::string& config,
|
||||
bool clean, bool fast,
|
||||
@ -1688,22 +1688,15 @@ int cmGlobalGenerator::Build(
|
||||
*/
|
||||
std::string cwd = cmSystemTools::GetCurrentWorkingDirectory();
|
||||
cmSystemTools::ChangeDirectory(bindir.c_str());
|
||||
if(output)
|
||||
{
|
||||
*output += "Change Dir: ";
|
||||
*output += bindir;
|
||||
*output += "\n";
|
||||
}
|
||||
output += "Change Dir: ";
|
||||
output += bindir;
|
||||
output += "\n";
|
||||
|
||||
int retVal;
|
||||
bool hideconsole = cmSystemTools::GetRunCommandHideConsole();
|
||||
cmSystemTools::SetRunCommandHideConsole(true);
|
||||
std::string outputBuffer;
|
||||
std::string* outputPtr = 0;
|
||||
if(output)
|
||||
{
|
||||
outputPtr = &outputBuffer;
|
||||
}
|
||||
std::string* outputPtr = &outputBuffer;
|
||||
|
||||
// should we do a clean first?
|
||||
if (clean)
|
||||
@ -1711,32 +1704,23 @@ int cmGlobalGenerator::Build(
|
||||
std::vector<std::string> cleanCommand;
|
||||
this->GenerateBuildCommand(cleanCommand, makeCommandCSTR, projectName,
|
||||
bindir, "clean", config, fast);
|
||||
if(output)
|
||||
{
|
||||
*output += "\nRun Clean Command:";
|
||||
*output += cmSystemTools::PrintSingleCommand(cleanCommand);
|
||||
*output += "\n";
|
||||
}
|
||||
output += "\nRun Clean Command:";
|
||||
output += cmSystemTools::PrintSingleCommand(cleanCommand);
|
||||
output += "\n";
|
||||
|
||||
if (!cmSystemTools::RunSingleCommand(cleanCommand, outputPtr,
|
||||
&retVal, 0, outputflag, timeout))
|
||||
{
|
||||
cmSystemTools::SetRunCommandHideConsole(hideconsole);
|
||||
cmSystemTools::Error("Generator: execution of make clean failed.");
|
||||
if (output)
|
||||
{
|
||||
*output += *outputPtr;
|
||||
*output += "\nGenerator: execution of make clean failed.\n";
|
||||
}
|
||||
output += *outputPtr;
|
||||
output += "\nGenerator: execution of make clean failed.\n";
|
||||
|
||||
// return to the original directory
|
||||
cmSystemTools::ChangeDirectory(cwd.c_str());
|
||||
return 1;
|
||||
}
|
||||
if (output)
|
||||
{
|
||||
*output += *outputPtr;
|
||||
}
|
||||
output += *outputPtr;
|
||||
}
|
||||
|
||||
// now build
|
||||
@ -1744,12 +1728,9 @@ int cmGlobalGenerator::Build(
|
||||
this->GenerateBuildCommand(makeCommand, makeCommandCSTR, projectName,
|
||||
bindir, target, config, fast, nativeOptions);
|
||||
std::string makeCommandStr = cmSystemTools::PrintSingleCommand(makeCommand);
|
||||
if(output)
|
||||
{
|
||||
*output += "\nRun Build Command:";
|
||||
*output += makeCommandStr;
|
||||
*output += "\n";
|
||||
}
|
||||
output += "\nRun Build Command:";
|
||||
output += makeCommandStr;
|
||||
output += "\n";
|
||||
|
||||
if (!cmSystemTools::RunSingleCommand(makeCommand, outputPtr,
|
||||
&retVal, 0, outputflag, timeout))
|
||||
@ -1758,27 +1739,21 @@ int cmGlobalGenerator::Build(
|
||||
cmSystemTools::Error
|
||||
("Generator: execution of make failed. Make command was: ",
|
||||
makeCommandStr.c_str());
|
||||
if (output)
|
||||
{
|
||||
*output += *outputPtr;
|
||||
*output += "\nGenerator: execution of make failed. Make command was: "
|
||||
output += *outputPtr;
|
||||
output += "\nGenerator: execution of make failed. Make command was: "
|
||||
+ makeCommandStr + "\n";
|
||||
}
|
||||
|
||||
// return to the original directory
|
||||
cmSystemTools::ChangeDirectory(cwd.c_str());
|
||||
return 1;
|
||||
}
|
||||
if (output)
|
||||
{
|
||||
*output += *outputPtr;
|
||||
}
|
||||
output += *outputPtr;
|
||||
cmSystemTools::SetRunCommandHideConsole(hideconsole);
|
||||
|
||||
// The SGI MipsPro 7.3 compiler does not return an error code when
|
||||
// the source has a #error in it! This is a work-around for such
|
||||
// compilers.
|
||||
if((retVal == 0) && (output->find("#error") != std::string::npos))
|
||||
if((retVal == 0) && (output.find("#error") != std::string::npos))
|
||||
{
|
||||
retVal = 1;
|
||||
}
|
||||
|
@ -116,7 +116,7 @@ public:
|
||||
virtual int TryCompile(const std::string& srcdir, const std::string& bindir,
|
||||
const std::string& projectName,
|
||||
const std::string& targetName,
|
||||
bool fast, std::string *output, cmMakefile* mf);
|
||||
bool fast, std::string& output, cmMakefile* mf);
|
||||
|
||||
|
||||
/**
|
||||
@ -127,7 +127,7 @@ public:
|
||||
*/
|
||||
int Build(const std::string& srcdir, const std::string& bindir,
|
||||
const std::string& projectName, const std::string& targetName,
|
||||
std::string *output,
|
||||
std::string& output,
|
||||
const std::string& makeProgram, const std::string& config,
|
||||
bool clean, bool fast,
|
||||
double timeout,
|
||||
|
@ -3510,7 +3510,7 @@ int cmMakefile::TryCompile(const std::string& srcdir,
|
||||
const std::string& targetName,
|
||||
bool fast,
|
||||
const std::vector<std::string> *cmakeArgs,
|
||||
std::string *output)
|
||||
std::string& output)
|
||||
{
|
||||
this->Internal->IsSourceFileTryCompile = fast;
|
||||
// does the binary directory exist ? If not create it...
|
||||
|
@ -130,7 +130,7 @@ public:
|
||||
const std::string& projectName, const std::string& targetName,
|
||||
bool fast,
|
||||
const std::vector<std::string> *cmakeArgs,
|
||||
std::string *output);
|
||||
std::string& output);
|
||||
|
||||
bool GetIsSourceFileTryCompile() const;
|
||||
|
||||
|
@ -2757,7 +2757,7 @@ int cmake::Build(const std::string& dir,
|
||||
projName = it.GetValue();
|
||||
return gen->Build("", dir,
|
||||
projName, target,
|
||||
&output,
|
||||
output,
|
||||
"",
|
||||
config, clean, false, 0,
|
||||
cmSystemTools::OUTPUT_PASSTHROUGH,
|
||||
|
Loading…
x
Reference in New Issue
Block a user