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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With