Make CMake use gccfilter

前端 未结 1 1730
温柔的废话
温柔的废话 2021-02-04 21:21

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 C

1条回答
  •  无人共我
    2021-02-04 21:57

    You can make CMake use gccfilter by pointing the RULE_LAUNCH_COMPILE property to a wrapper script which invokes gccfilter with the desired options.

    Create an executable shell script named gccfilter_wrap in the outermost CMake project directory with the following contents:

    #!/bin/sh
    exec gccfilter -a -c "$@"
    

    Be sure to set the file's executable bit. Then in your CMakeLists.txt, set the RULE_LAUNCH_COMPILE directory property before adding targets:

    project (HelloWorld)
    
    set_directory_properties(PROPERTIES RULE_LAUNCH_COMPILE
       "${PROJECT_SOURCE_DIR}/gccfilter_wrap")
    
    add_executable(HelloWorld HelloWorld.cpp)
    

    The generated makefile rules will then prefix each compiler invocation with the gccfilter_wrap script. Alternatively the RULE_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:

    # GCCFilter, if appliciable
    if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCPP)
      option(COLOR_GCC "Use GCCFilter to color compiler output messages" ON)
      set(COLOR_GCC_OPTIONS "-c -r -w" CACHE STRING "Arguments that are passed to gccfilter when output coloring is switchend on. Defaults to -c -r -w.")
      if(COLOR_GCC)
        set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${PROJECT_SOURCE_DIR}/cmake/gccfilter ${COLOR_GCC_OPTIONS}")
      endif()
    endif()
    

    0 讨论(0)
提交回复
热议问题