cmake: Teach --build to get VCExpress output (#15437)
VCExpress does not produce output if its pipes are connected to an interactive terminal. Add a special case to 'cmake --build' to capture the output through a pipe and re-print it instead of sharing output pipes with VCExpress.
This commit is contained in:
parent
a6d488f2ce
commit
94887cb6f1
|
@ -1717,6 +1717,19 @@ int cmGlobalGenerator::Build(
|
|||
std::string outputBuffer;
|
||||
std::string* outputPtr = &outputBuffer;
|
||||
|
||||
std::vector<std::string> makeCommand;
|
||||
this->GenerateBuildCommand(makeCommand, makeCommandCSTR, projectName,
|
||||
bindir, target, config, fast, verbose,
|
||||
nativeOptions);
|
||||
|
||||
// Workaround to convince VCExpress.exe to produce output.
|
||||
if (outputflag == cmSystemTools::OUTPUT_PASSTHROUGH &&
|
||||
!makeCommand.empty() && cmSystemTools::LowerCase(
|
||||
cmSystemTools::GetFilenameName(makeCommand[0])) == "vcexpress.exe")
|
||||
{
|
||||
outputflag = cmSystemTools::OUTPUT_NORMAL;
|
||||
}
|
||||
|
||||
// should we do a clean first?
|
||||
if (clean)
|
||||
{
|
||||
|
@ -1743,10 +1756,6 @@ int cmGlobalGenerator::Build(
|
|||
}
|
||||
|
||||
// now build
|
||||
std::vector<std::string> makeCommand;
|
||||
this->GenerateBuildCommand(makeCommand, makeCommandCSTR, projectName,
|
||||
bindir, target, config, fast, verbose,
|
||||
nativeOptions);
|
||||
std::string makeCommandStr = cmSystemTools::PrintSingleCommand(makeCommand);
|
||||
output += "\nRun Build Command:";
|
||||
output += makeCommandStr;
|
||||
|
|
Loading…
Reference in New Issue