Since version 5 of GCC and in all recent versions of clang color is used to greatly enhance the readability of the compiler output. With FreeBSD's make the color disappears, as soon as you use multiple jobs which is something you almost always want to do. To reproduce, create ==test.cpp== #include <iostream> int main() { std::cout << "foo" << "bar; return 0; } ==Makefile== test: test.cpp g++5 -o test test.cpp -std=c++14 % make [see output with color] % gmake [see output with color] % make -j 2 [no color :'(] % gmake [see output with color] This might seems like it is not really important, but for larger codebases with templatatized code (and thus huge error messages) it makes a big difference! Also, I suspect it wouldn't be too hard to fix? Thank you very much!
see the -fdiagnostics-color option in the GCC documentation, and in particular -fdiagnostics-color=always. most build tools buffer output from individual jobs when running multiple jobs, and so tools like GCC or Clang detect that they are not outputting to a terminal (directly) and disable colour by default. So, this behaviour is as expected.