GCCFilter is a neat perl script that allows to color the output of GCC and thus makes debugging much more fun and, more important, faster.
You can use GCCFilter with a CMake generated Makefile by calling
gccfilter -a -c make
However, this approach has some drawbacks: Delayed output of CMake status infos, no color in the CMake commands are the most obvious.
The question: Is there a way to write some CMake module that searches for gccfilter
if the compiler is gcc
, checks if, say COLOR_CXX
is set (rather easy up to here) and then tells CMake to replace all calls to gcc
by gccfilter -a -c gcc
.
CMake offers the variable CMAKE_CXX_COMPILER
, but changing this one will disallow CMake to find correct include paths and the like. Is there some variable we may change after the project()
command that is prefixed before each call to gcc
?
You can make CMake use
gccfilter
by pointing the RULE_LAUNCH_COMPILE property to a wrapper script which invokesgccfilter
with the desired options.Create an executable shell script named
gccfilter_wrap
in the outermost CMake project directory with the following contents:Be sure to set the file's executable bit. Then in your
CMakeLists.txt
, set theRULE_LAUNCH_COMPILE
directory property before adding targets:The generated makefile rules will then prefix each compiler invocation with the
gccfilter_wrap
script. Alternatively theRULE_LAUNCH_COMPILE
property can also be set as a target property or as global property.The
RULE_LAUNCH_COMPILE
property only works for Makefile-based CMake generators.Edit by Thilo
This is how I finally solved the problem - basically a rephrased version of this solution: