mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-20 04:24:36 +08:00
cmake: Add options for verbose output to --build mode
While we already support `VERBOSE` environment variable and `CMAKE_VERBOSE_MAKEFILE` cached variable, add `-v` and `--verbose` command line options to be able to activate verbose output directly from CMake's build tool mode command line. Also make `msbuild` honor the verbosity setting. `xcodebuild` still doesn't honor the verbosity setting as it will need a policy added and reworking of cmGlobalGenerator and cmsys to support multiple command invocation.
This commit is contained in:

committed by
Brad King

parent
638667efa2
commit
439fe2e253
8
Help/envvar/CMAKE_NO_VERBOSE.rst
Normal file
8
Help/envvar/CMAKE_NO_VERBOSE.rst
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
CMAKE_NO_VERBOSE
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Disables verbose output from CMake when :envvar:`VERBOSE` environment variable
|
||||||
|
is set.
|
||||||
|
|
||||||
|
Only your build tool of choice will still print verbose output when you start
|
||||||
|
to actually build your project.
|
10
Help/envvar/VERBOSE.rst
Normal file
10
Help/envvar/VERBOSE.rst
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
VERBOSE
|
||||||
|
-------
|
||||||
|
|
||||||
|
Activates verbose output from CMake and your build tools of choice when
|
||||||
|
you start to actually build your project.
|
||||||
|
|
||||||
|
Note that any given value is ignored. It's just checked for existence.
|
||||||
|
|
||||||
|
See also :ref:`Build Tool Mode <Build Tool Mode>` and
|
||||||
|
:envvar:`CMAKE_NO_VERBOSE` environment variable
|
@@ -24,11 +24,13 @@ Environment Variables that Control the Build
|
|||||||
/envvar/CMAKE_BUILD_PARALLEL_LEVEL
|
/envvar/CMAKE_BUILD_PARALLEL_LEVEL
|
||||||
/envvar/CMAKE_CONFIG_TYPE
|
/envvar/CMAKE_CONFIG_TYPE
|
||||||
/envvar/CMAKE_MSVCIDE_RUN_PATH
|
/envvar/CMAKE_MSVCIDE_RUN_PATH
|
||||||
|
/envvar/CMAKE_NO_VERBOSE
|
||||||
/envvar/CMAKE_OSX_ARCHITECTURES
|
/envvar/CMAKE_OSX_ARCHITECTURES
|
||||||
/envvar/DESTDIR
|
/envvar/DESTDIR
|
||||||
/envvar/LDFLAGS
|
/envvar/LDFLAGS
|
||||||
/envvar/MACOSX_DEPLOYMENT_TARGET
|
/envvar/MACOSX_DEPLOYMENT_TARGET
|
||||||
/envvar/PackageName_ROOT
|
/envvar/PackageName_ROOT
|
||||||
|
/envvar/VERBOSE
|
||||||
|
|
||||||
Environment Variables for Languages
|
Environment Variables for Languages
|
||||||
===================================
|
===================================
|
||||||
|
@@ -289,6 +289,14 @@ following options:
|
|||||||
``--use-stderr``
|
``--use-stderr``
|
||||||
Ignored. Behavior is default in CMake >= 3.0.
|
Ignored. Behavior is default in CMake >= 3.0.
|
||||||
|
|
||||||
|
``-v, --verbose``
|
||||||
|
Enable verbose output - if supported - including the build commands to be
|
||||||
|
executed.
|
||||||
|
|
||||||
|
This option can be omitted if :envvar:`VERBOSE` environment variable or
|
||||||
|
:variable:`CMAKE_VERBOSE_MAKEFILE` cached variable is set.
|
||||||
|
|
||||||
|
|
||||||
``--``
|
``--``
|
||||||
Pass remaining options to the native tool.
|
Pass remaining options to the native tool.
|
||||||
|
|
||||||
|
6
Help/release/dev/cmake-build-verbose.rst
Normal file
6
Help/release/dev/cmake-build-verbose.rst
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
cmake-build-verbose
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
* The :manual:`cmake(1)` :ref:`Build Tool Mode` (``cmake --build``) gained
|
||||||
|
``--verbose`` and ``-v`` options to specify verbose build output. Some
|
||||||
|
generators such as Xcode don't support this option currently.
|
@@ -493,7 +493,7 @@ void cmGlobalUnixMakefileGenerator3::GenerateBuildCommand(
|
|||||||
GeneratedMakeCommand& makeCommand, const std::string& makeProgram,
|
GeneratedMakeCommand& makeCommand, 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,
|
||||||
int jobs, bool /*verbose*/, std::vector<std::string> const& makeOptions)
|
int jobs, bool verbose, std::vector<std::string> const& makeOptions)
|
||||||
{
|
{
|
||||||
std::unique_ptr<cmMakefile> mfu;
|
std::unique_ptr<cmMakefile> mfu;
|
||||||
cmMakefile* mf;
|
cmMakefile* mf;
|
||||||
@@ -510,6 +510,13 @@ void cmGlobalUnixMakefileGenerator3::GenerateBuildCommand(
|
|||||||
mf = mfu.get();
|
mf = mfu.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make it possible to set verbosity also from command line
|
||||||
|
if (verbose) {
|
||||||
|
makeCommand.add(cmSystemTools::GetCMakeCommand());
|
||||||
|
makeCommand.add("-E");
|
||||||
|
makeCommand.add("env");
|
||||||
|
makeCommand.add("VERBOSE=1");
|
||||||
|
}
|
||||||
makeCommand.add(this->SelectMakeProgram(makeProgram));
|
makeCommand.add(this->SelectMakeProgram(makeProgram));
|
||||||
|
|
||||||
if (jobs != cmake::NO_BUILD_PARALLEL_LEVEL) {
|
if (jobs != cmake::NO_BUILD_PARALLEL_LEVEL) {
|
||||||
|
@@ -961,6 +961,10 @@ void cmGlobalVisualStudio10Generator::GenerateBuildCommand(
|
|||||||
makeCommand.add("/p:CL_MPCount=1");
|
makeCommand.add("/p:CL_MPCount=1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Respect the verbosity: 'n' normal will show build commands
|
||||||
|
// 'm' minimal only the build step's title
|
||||||
|
makeCommand.add(std::string("/v:") + ((verbose) ? "n" : "m"));
|
||||||
|
|
||||||
makeCommand.add(makeOptions.begin(), makeOptions.end());
|
makeCommand.add(makeOptions.begin(), makeOptions.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2539,7 +2539,8 @@ cmMessenger* cmake::GetMessenger() const
|
|||||||
|
|
||||||
int cmake::Build(int jobs, const std::string& dir, const std::string& target,
|
int cmake::Build(int jobs, const std::string& dir, const std::string& target,
|
||||||
const std::string& config,
|
const std::string& config,
|
||||||
const std::vector<std::string>& nativeOptions, bool clean)
|
const std::vector<std::string>& nativeOptions, bool clean,
|
||||||
|
bool verbose)
|
||||||
{
|
{
|
||||||
|
|
||||||
this->SetHomeDirectory("");
|
this->SetHomeDirectory("");
|
||||||
@@ -2592,11 +2593,11 @@ int cmake::Build(int jobs, const std::string& dir, const std::string& target,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
projName = cachedProjectName;
|
projName = cachedProjectName;
|
||||||
bool verbose = false;
|
|
||||||
const char* cachedVerbose =
|
const char* cachedVerbose =
|
||||||
this->State->GetCacheEntryValue("CMAKE_VERBOSE_MAKEFILE");
|
this->State->GetCacheEntryValue("CMAKE_VERBOSE_MAKEFILE");
|
||||||
if (cachedVerbose) {
|
if (cmSystemTools::IsOn(cachedVerbose)) {
|
||||||
verbose = cmSystemTools::IsOn(cachedVerbose);
|
verbose = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CMAKE_HAVE_VS_GENERATORS
|
#ifdef CMAKE_HAVE_VS_GENERATORS
|
||||||
|
@@ -430,7 +430,8 @@ public:
|
|||||||
///! run the --build option
|
///! run the --build option
|
||||||
int Build(int jobs, const std::string& dir, const std::string& target,
|
int Build(int jobs, const std::string& dir, const std::string& target,
|
||||||
const std::string& config,
|
const std::string& config,
|
||||||
const std::vector<std::string>& nativeOptions, bool clean);
|
const std::vector<std::string>& nativeOptions, bool clean,
|
||||||
|
bool verbose);
|
||||||
|
|
||||||
///! run the --open option
|
///! run the --open option
|
||||||
bool Open(const std::string& dir, bool dryRun);
|
bool Open(const std::string& dir, bool dryRun);
|
||||||
|
@@ -68,6 +68,8 @@ static const char* cmDocumentationUsageNote[][2] = {
|
|||||||
" --clean-first = Build target 'clean' first, then build.\n" \
|
" --clean-first = Build target 'clean' first, then build.\n" \
|
||||||
" (To clean only, use --target 'clean'.)\n" \
|
" (To clean only, use --target 'clean'.)\n" \
|
||||||
" --use-stderr = Ignored. Behavior is default in CMake >= 3.0.\n" \
|
" --use-stderr = Ignored. Behavior is default in CMake >= 3.0.\n" \
|
||||||
|
" -v --verbose = Enable verbose output - if supported - including\n" \
|
||||||
|
" the build commands to be executed. \n" \
|
||||||
" -- = Pass remaining options to the native tool.\n"
|
" -- = Pass remaining options to the native tool.\n"
|
||||||
|
|
||||||
static const char* cmDocumentationOptions[][2] = {
|
static const char* cmDocumentationOptions[][2] = {
|
||||||
@@ -395,6 +397,7 @@ static int do_build(int ac, char const* const* av)
|
|||||||
std::string dir;
|
std::string dir;
|
||||||
std::vector<std::string> nativeOptions;
|
std::vector<std::string> nativeOptions;
|
||||||
bool clean = false;
|
bool clean = false;
|
||||||
|
bool verbose = cmSystemTools::HasEnv("VERBOSE");
|
||||||
bool hasTarget = false;
|
bool hasTarget = false;
|
||||||
|
|
||||||
enum Doing
|
enum Doing
|
||||||
@@ -435,6 +438,10 @@ static int do_build(int ac, char const* const* av)
|
|||||||
} else if (strcmp(av[i], "--clean-first") == 0) {
|
} else if (strcmp(av[i], "--clean-first") == 0) {
|
||||||
clean = true;
|
clean = true;
|
||||||
doing = DoingNone;
|
doing = DoingNone;
|
||||||
|
} else if ((strcmp(av[i], "--verbose") == 0) ||
|
||||||
|
(strcmp(av[i], "-v") == 0)) {
|
||||||
|
verbose = true;
|
||||||
|
doing = DoingNone;
|
||||||
} else if (strcmp(av[i], "--use-stderr") == 0) {
|
} else if (strcmp(av[i], "--use-stderr") == 0) {
|
||||||
/* tolerate legacy option */
|
/* tolerate legacy option */
|
||||||
} else if (strcmp(av[i], "--") == 0) {
|
} else if (strcmp(av[i], "--") == 0) {
|
||||||
@@ -493,7 +500,7 @@ static int do_build(int ac, char const* const* av)
|
|||||||
cmake cm(cmake::RoleInternal, cmState::Unknown);
|
cmake cm(cmake::RoleInternal, cmState::Unknown);
|
||||||
cmSystemTools::SetMessageCallback(cmakemainMessageCallback, &cm);
|
cmSystemTools::SetMessageCallback(cmakemainMessageCallback, &cm);
|
||||||
cm.SetProgressCallback(cmakemainProgressCallback, &cm);
|
cm.SetProgressCallback(cmakemainProgressCallback, &cm);
|
||||||
return cm.Build(jobs, dir, target, config, nativeOptions, clean);
|
return cm.Build(jobs, dir, target, config, nativeOptions, clean, verbose);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user