cmake: Teach --build to honor CMAKE_VERBOSE_MAKEFILE for Ninja

The Ninja build system does not support a in-file verbositiy switch.
Instead teach 'cmake --build' to extract the CMAKE_VERBOSE_MAKEFILE
setting and pass it as an optional '-v' argument to Ninja.  This can
serve as a reasonable fallback.

Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
This commit is contained in:
Gregor Jasny 2015-02-26 11:32:26 +01:00 committed by Brad King
parent 4817d2814a
commit ce935ebe50
17 changed files with 35 additions and 22 deletions

View File

@ -664,7 +664,7 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects(
globalGenerator->GenerateBuildCommand(buildCommand, cmakeMakeProgram, globalGenerator->GenerateBuildCommand(buildCommand, cmakeMakeProgram,
installProjectName, installDirectory, installProjectName, installDirectory,
globalGenerator->GetPreinstallTargetName(), globalGenerator->GetPreinstallTargetName(),
buildConfig, false); buildConfig, false, false);
std::string buildCommandStr = std::string buildCommandStr =
cmSystemTools::PrintSingleCommand(buildCommand); cmSystemTools::PrintSingleCommand(buildCommand);
cmCPackLogger(cmCPackLog::LOG_DEBUG, cmCPackLogger(cmCPackLog::LOG_DEBUG,

View File

@ -310,7 +310,7 @@ int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring)
output, this->BuildMakeProgram, output, this->BuildMakeProgram,
config, config,
!this->BuildNoClean, !this->BuildNoClean,
false, remainingTime); false, false, remainingTime);
out << output; out << output;
// if the build failed then return // if the build failed then return
if (retVal) if (retVal)

View File

@ -1677,14 +1677,14 @@ int cmGlobalGenerator::TryCompile(const std::string& srcdir,
mf->GetSafeDefinition("CMAKE_TRY_COMPILE_CONFIGURATION"); mf->GetSafeDefinition("CMAKE_TRY_COMPILE_CONFIGURATION");
return this->Build(srcdir,bindir,projectName, return this->Build(srcdir,bindir,projectName,
newTarget, newTarget,
output,"",config,false,fast, output,"",config,false,fast,false,
this->TryCompileTimeout); this->TryCompileTimeout);
} }
void cmGlobalGenerator::GenerateBuildCommand( void cmGlobalGenerator::GenerateBuildCommand(
std::vector<std::string>& makeCommand, const std::string&, std::vector<std::string>& makeCommand, const std::string&,
const std::string&, const std::string&, const std::string&, const std::string&, const std::string&, const std::string&,
const std::string&, bool, const std::string&, bool, bool,
std::vector<std::string> const&) std::vector<std::string> const&)
{ {
makeCommand.push_back( makeCommand.push_back(
@ -1697,7 +1697,7 @@ int cmGlobalGenerator::Build(
std::string& output, std::string& output,
const std::string& makeCommandCSTR, const std::string& makeCommandCSTR,
const std::string& config, const std::string& config,
bool clean, bool fast, bool clean, bool fast, bool verbose,
double timeout, double timeout,
cmSystemTools::OutputOption outputflag, cmSystemTools::OutputOption outputflag,
std::vector<std::string> const& nativeOptions) std::vector<std::string> const& nativeOptions)
@ -1722,7 +1722,7 @@ int cmGlobalGenerator::Build(
{ {
std::vector<std::string> cleanCommand; std::vector<std::string> cleanCommand;
this->GenerateBuildCommand(cleanCommand, makeCommandCSTR, projectName, this->GenerateBuildCommand(cleanCommand, makeCommandCSTR, projectName,
bindir, "clean", config, fast); bindir, "clean", config, fast, verbose);
output += "\nRun Clean Command:"; output += "\nRun Clean Command:";
output += cmSystemTools::PrintSingleCommand(cleanCommand); output += cmSystemTools::PrintSingleCommand(cleanCommand);
output += "\n"; output += "\n";
@ -1745,7 +1745,8 @@ int cmGlobalGenerator::Build(
// now build // now build
std::vector<std::string> makeCommand; std::vector<std::string> makeCommand;
this->GenerateBuildCommand(makeCommand, makeCommandCSTR, projectName, this->GenerateBuildCommand(makeCommand, makeCommandCSTR, projectName,
bindir, target, config, fast, nativeOptions); bindir, target, config, fast, verbose,
nativeOptions);
std::string makeCommandStr = cmSystemTools::PrintSingleCommand(makeCommand); std::string makeCommandStr = cmSystemTools::PrintSingleCommand(makeCommand);
output += "\nRun Build Command:"; output += "\nRun Build Command:";
output += makeCommandStr; output += makeCommandStr;

View File

@ -134,7 +134,7 @@ public:
const std::string& projectName, const std::string& targetName, const std::string& projectName, const std::string& targetName,
std::string& output, std::string& output,
const std::string& makeProgram, const std::string& config, const std::string& makeProgram, const std::string& config,
bool clean, bool fast, bool clean, bool fast, bool verbose,
double timeout, double timeout,
cmSystemTools::OutputOption outputflag=cmSystemTools::OUTPUT_NONE, cmSystemTools::OutputOption outputflag=cmSystemTools::OUTPUT_NONE,
std::vector<std::string> const& nativeOptions = std::vector<std::string> const& nativeOptions =
@ -144,7 +144,8 @@ public:
std::vector<std::string>& makeCommand, std::vector<std::string>& makeCommand,
const std::string& makeProgram, const std::string& makeProgram,
const std::string& projectName, const std::string& projectDir, const std::string& projectName, const std::string& projectDir,
const std::string& targetName, const std::string& config, bool fast, const std::string& targetName, const std::string& config,
bool fast, bool verbose,
std::vector<std::string> const& makeOptions = std::vector<std::string>() std::vector<std::string> const& makeOptions = std::vector<std::string>()
); );

View File

@ -574,12 +574,18 @@ void cmGlobalNinjaGenerator
const std::string& targetName, const std::string& targetName,
const std::string& /*config*/, const std::string& /*config*/,
bool /*fast*/, bool /*fast*/,
bool verbose,
std::vector<std::string> const& makeOptions) std::vector<std::string> const& makeOptions)
{ {
makeCommand.push_back( makeCommand.push_back(
this->SelectMakeProgram(makeProgram) this->SelectMakeProgram(makeProgram)
); );
if(verbose)
{
makeCommand.push_back("-v");
}
makeCommand.insert(makeCommand.end(), makeCommand.insert(makeCommand.end(),
makeOptions.begin(), makeOptions.end()); makeOptions.begin(), makeOptions.end());
if(!targetName.empty()) if(!targetName.empty())

View File

@ -196,7 +196,7 @@ public:
const std::string& projectDir, const std::string& projectDir,
const std::string& targetName, const std::string& targetName,
const std::string& config, const std::string& config,
bool fast, bool fast, bool verbose,
std::vector<std::string> const& makeOptions = std::vector<std::string>() std::vector<std::string> const& makeOptions = std::vector<std::string>()
); );

View File

@ -554,7 +554,7 @@ void cmGlobalUnixMakefileGenerator3
const std::string& /*projectDir*/, const std::string& /*projectDir*/,
const std::string& targetName, const std::string& targetName,
const std::string& /*config*/, const std::string& /*config*/,
bool fast, bool fast, bool /*verbose*/,
std::vector<std::string> const& makeOptions) std::vector<std::string> const& makeOptions)
{ {
makeCommand.push_back( makeCommand.push_back(

View File

@ -114,7 +114,7 @@ public:
const std::string& projectDir, const std::string& projectDir,
const std::string& targetName, const std::string& targetName,
const std::string& config, const std::string& config,
bool fast, bool fast, bool verbose,
std::vector<std::string> const& makeOptions = std::vector<std::string>() std::vector<std::string> const& makeOptions = std::vector<std::string>()
); );

View File

@ -459,7 +459,7 @@ void cmGlobalVisualStudio10Generator::GenerateBuildCommand(
const std::string& projectDir, const std::string& projectDir,
const std::string& targetName, const std::string& targetName,
const std::string& config, const std::string& config,
bool fast, bool fast, bool verbose,
std::vector<std::string> const& makeOptions) std::vector<std::string> const& makeOptions)
{ {
// Select the caller- or user-preferred make program, else MSBuild. // Select the caller- or user-preferred make program, else MSBuild.
@ -507,7 +507,7 @@ void cmGlobalVisualStudio10Generator::GenerateBuildCommand(
// Use devenv to build solutions containing Intel Fortran projects. // Use devenv to build solutions containing Intel Fortran projects.
cmGlobalVisualStudio7Generator::GenerateBuildCommand( cmGlobalVisualStudio7Generator::GenerateBuildCommand(
makeCommand, makeProgram, projectName, projectDir, makeCommand, makeProgram, projectName, projectDir,
targetName, config, fast, makeOptions); targetName, config, fast, verbose, makeOptions);
return; return;
} }

View File

@ -41,7 +41,7 @@ public:
const std::string& projectDir, const std::string& projectDir,
const std::string& targetName, const std::string& targetName,
const std::string& config, const std::string& config,
bool fast, bool fast, bool verbose,
std::vector<std::string> const& makeOptions = std::vector<std::string>() std::vector<std::string> const& makeOptions = std::vector<std::string>()
); );

View File

@ -120,7 +120,7 @@ cmGlobalVisualStudio6Generator::GenerateBuildCommand(
const std::string& /*projectDir*/, const std::string& /*projectDir*/,
const std::string& targetName, const std::string& targetName,
const std::string& config, const std::string& config,
bool /*fast*/, bool /*fast*/, bool /*verbose*/,
std::vector<std::string> const& makeOptions std::vector<std::string> const& makeOptions
) )
{ {

View File

@ -59,7 +59,7 @@ public:
const std::string& projectDir, const std::string& projectDir,
const std::string& targetName, const std::string& targetName,
const std::string& config, const std::string& config,
bool fast, bool fast, bool verbose,
std::vector<std::string> const& makeOptions = std::vector<std::string>() std::vector<std::string> const& makeOptions = std::vector<std::string>()
); );

View File

@ -191,7 +191,7 @@ void cmGlobalVisualStudio7Generator::GenerateBuildCommand(
const std::string& /*projectDir*/, const std::string& /*projectDir*/,
const std::string& targetName, const std::string& targetName,
const std::string& config, const std::string& config,
bool /*fast*/, bool /*fast*/, bool /*verbose*/,
std::vector<std::string> const& makeOptions) std::vector<std::string> const& makeOptions)
{ {
// Select the caller- or user-preferred make program, else devenv. // Select the caller- or user-preferred make program, else devenv.

View File

@ -69,7 +69,7 @@ public:
const std::string& projectDir, const std::string& projectDir,
const std::string& targetName, const std::string& targetName,
const std::string& config, const std::string& config,
bool fast, bool fast, bool verbose,
std::vector<std::string> const& makeOptions = std::vector<std::string>() std::vector<std::string> const& makeOptions = std::vector<std::string>()
); );

View File

@ -310,7 +310,7 @@ cmGlobalXCodeGenerator::GenerateBuildCommand(
const std::string& /*projectDir*/, const std::string& /*projectDir*/,
const std::string& targetName, const std::string& targetName,
const std::string& config, const std::string& config,
bool /*fast*/, bool /*fast*/, bool /*verbose*/,
std::vector<std::string> const& makeOptions) std::vector<std::string> const& makeOptions)
{ {
// now build the test // now build the test

View File

@ -60,7 +60,7 @@ public:
const std::string& projectDir, const std::string& projectDir,
const std::string& targetName, const std::string& targetName,
const std::string& config, const std::string& config,
bool fast, bool fast, bool verbose,
std::vector<std::string> const& makeOptions = std::vector<std::string>() std::vector<std::string> const& makeOptions = std::vector<std::string>()
); );

View File

@ -2789,11 +2789,16 @@ int cmake::Build(const std::string& dir,
return 1; return 1;
} }
projName = it.GetValue(); projName = it.GetValue();
bool verbose = false;
if(it.Find("CMAKE_VERBOSE_MAKEFILE"))
{
verbose = it.GetValueAsBool();
}
return gen->Build("", dir, return gen->Build("", dir,
projName, target, projName, target,
output, output,
"", "",
config, clean, false, 0, config, clean, false, verbose, 0,
cmSystemTools::OUTPUT_PASSTHROUGH, cmSystemTools::OUTPUT_PASSTHROUGH,
nativeOptions); nativeOptions);
} }