..
If you often pipe `make`to `less` and would like to maintain the
-diagnostic colors for errors and warnings, you can invoke `cmake`
-with:
+diagnostic colors for errors and warnings (and if your compiler
+supports it), you can invoke `cmake` with:
- $ cmake -DDIAG_COLOR_ALWAYS=yes [...]
+ $ cmake -DDIAGNOSTICS_COLOR=always [...]
Then you'll get the diagnostic colors when you execute:
$ make | less -R
+Other available values for DIAGNOSTICS_COLOR are 'auto' (default) and
+'never'.
+
+
**More options will be implemented in the future.**
endif()
-# if compiler allows it and if -DDIAG_COLOR_ALWAYS=yes is provided to
-# cmake, turn on diagnostic colors, even when compiler output does not
-# go to terminal (e.g., when piped to less)
+## Handle diagnostics color if compiler supports them.
CHECK_C_COMPILER_FLAG("-fdiagnostics-color=always"
- COMPILER_SUPPORTS_DIAG_COLOR_ALWAYS)
-
-if(DIAG_COLOR_ALWAYS)
- if(COMPILER_SUPPORTS_DIAG_COLOR_ALWAYS)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always")
- message(STATUS "C and C++ compilers will always show diagnostic colors")
- else()
- message(WARNING
- "Unable to turn on DIAG_COLOR_ALWAYS, because this compiler does not support -fdiagnostics-color=always flag.")
- endif()
+ COMPILER_SUPPORTS_DIAGNOSTICS_COLOR)
+
+set(DIAGNOSTICS_COLOR "auto"
+ CACHE STRING "Used if the C/C++ compiler supports the -fdiagnostics-color option. May have one of three values -- 'auto' (default), 'always', or 'never'. If set to 'always' and the compiler supports the option, 'make [...] | less -R' will make visible diagnostics colorization of compiler output.")
+
+if(COMPILER_SUPPORTS_DIAGNOSTICS_COLOR)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=${DIAGNOSTICS_COLOR}")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=${DIAGNOSTICS_COLOR}")
endif()