Makefile: Optionally disable target completion messages in build output

Add a TARGET_MESSAGES property to control whether Makefile targets print
the "Built target " completion messages.  Default to ON to preserve
existing behavior.
This commit is contained in:
Michael Ensslin 2015-07-10 18:14:47 +02:00 committed by Brad King
parent d560b46f52
commit 1d3984780d
5 changed files with 44 additions and 2 deletions

View File

@ -40,6 +40,7 @@ Properties of Global Scope
/prop_gbl/RULE_LAUNCH_LINK /prop_gbl/RULE_LAUNCH_LINK
/prop_gbl/RULE_MESSAGES /prop_gbl/RULE_MESSAGES
/prop_gbl/TARGET_ARCHIVES_MAY_BE_SHARED_LIBS /prop_gbl/TARGET_ARCHIVES_MAY_BE_SHARED_LIBS
/prop_gbl/TARGET_MESSAGES
/prop_gbl/TARGET_SUPPORTS_SHARED_LIBS /prop_gbl/TARGET_SUPPORTS_SHARED_LIBS
/prop_gbl/USE_FOLDERS /prop_gbl/USE_FOLDERS

View File

@ -0,0 +1,20 @@
TARGET_MESSAGES
---------------
Specify whether to report the completion of each target.
This property specifies whether :ref:`Makefile Generators` should
add a progress message describing that each target has been completed.
If the property is not set the default is ``ON``. Set the property
to ``OFF`` to disable target completion messages.
This option is intended to reduce build output when little or no
work needs to be done to bring the build tree up to date.
If a ``CMAKE_TARGET_MESSAGES`` cache entry exists its value
initializes the value of this property.
Non-Makefile generators currently ignore this property.
See the counterpart property :prop_gbl:`RULE_MESSAGES` to disable
everything except for target completion messages.

View File

@ -0,0 +1,6 @@
makefile-target-messages
------------------------
* A :prop_gbl:`TARGET_MESSAGES` global property was added to tell the
:ref:`Makefile Generators` whether to generate commands to print output
after each target is completed.

View File

@ -52,6 +52,9 @@ if(CMAKE_GENERATOR MATCHES "Make")
if(DEFINED CMAKE_RULE_MESSAGES) if(DEFINED CMAKE_RULE_MESSAGES)
set_property(GLOBAL PROPERTY RULE_MESSAGES ${CMAKE_RULE_MESSAGES}) set_property(GLOBAL PROPERTY RULE_MESSAGES ${CMAKE_RULE_MESSAGES})
endif() endif()
if(DEFINED CMAKE_TARGET_MESSAGES)
set_property(GLOBAL PROPERTY TARGET_MESSAGES ${CMAKE_TARGET_MESSAGES})
endif()
if(CMAKE_GENERATOR MATCHES "Unix Makefiles") if(CMAKE_GENERATOR MATCHES "Unix Makefiles")
set(CMAKE_EXPORT_COMPILE_COMMANDS OFF CACHE BOOL set(CMAKE_EXPORT_COMPILE_COMMANDS OFF CACHE BOOL
"Enable/Disable output of compile commands during generation." "Enable/Disable output of compile commands during generation."

View File

@ -801,8 +801,20 @@ cmGlobalUnixMakefileGenerator3
} }
progress.Arg = progressArg.str(); progress.Arg = progressArg.str();
} }
lg->AppendEcho(commands, "Built target " + name,
cmLocalUnixMakefileGenerator3::EchoNormal, &progress); bool targetMessages = true;
if (const char* tgtMsg = this->GetCMakeInstance()
->GetState()
->GetGlobalProperty("TARGET_MESSAGES"))
{
targetMessages = cmSystemTools::IsOn(tgtMsg);
}
if (targetMessages)
{
lg->AppendEcho(commands, "Built target " + name,
cmLocalUnixMakefileGenerator3::EchoNormal, &progress);
}
this->AppendGlobalTargetDepends(depends, gtarget); this->AppendGlobalTargetDepends(depends, gtarget);
lg->WriteMakeRule(ruleFileStream, "All Build rule for target.", lg->WriteMakeRule(ruleFileStream, "All Build rule for target.",