For example, when compiling .c files, I want cmake to just print
CC xxx.c
to stdout, like linux kbuild.
For example, when compiling .c files, I want cmake to just print
CC xxx.c
to stdout, like linux kbuild.
CMake output can be customized by suppressing the standard messages produced by CMake and outputting a custom message in a launcher script instead. Add the following code to your outermost CMakeLists.txt
:
set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_SOURCE_DIR}/custom_output.sh")
Setting the global RULE_MESSAGES property to OFF
will suppress the standard messages.
The global RULE_LAUNCH_COMPILE property is set to a custom launch script named custom_output.sh
which needs to be added to the root of the CMake source tree:
#!/bin/sh
# shell script invoked with the following arguments
# $(CXX) $(CXX_DEFINES) $(CXX_FLAGS) -o OBJECT_FILE -c SOURCE_FILE
# extract parameters
SOURCE_FILE="${@: -1:1}"
OBJECT_FILE="${@: -3:1}"
echo "CC `basename \"$SOURCE_FILE\"`"
# invoke compiler
exec "$@"
The script's executable bit needs to be set.
The linker output can be customized in the same fashion by also setting a RULE_LAUNCH_LINK script.
This is not possible in the current version of CMake
, without editing the source yourself. Of course sed
and awk
will help you.