Makefile目标颜色输出

我写了一个可以正常工作的Makefile。 我没有完全发表,只是其中的一部分正在调查:

COMPILE_cpp = $(CXX) $(CFLAGS) -o $@ -c $< $(MAKEDEP) $(INCLUDES) %.o : %.cpp ; $(COMPILE_cpp) .SUFFIXES: .o .cpp 

上面的代码是尽职的。 由于构build过程涉及许多文件,我想添加一些颜色输出。 我已经尝试了以下

 PRINT = @echo -e "\e[1;34mBuilding $<\e[0m" COMPILE_cpp = $(PRINT) && $(CXX) $(CFLAGS) -o $@ -c $< $(MAKEDEP) $(INCLUDES) %.o : %.cpp ; $(COMPILE_cpp) .SUFFIXES: .o .cpp 

Makefile仍然可以正常工作,但是现在我只能看到$(PRINT)和所选颜色的输出。 命令string$(CXX) $(CFLAGS) -o $@ -c $< $(MAKEDEP) $(INCLUDES)被正确执行,但不能打印到屏幕上; 我仍然可以看到最终的警告和错误。

我想避免使用外部工具(如colorgcc或CMake),并用bash脚本技巧破解它。

提前致谢!

编辑只是有点补充:如果我想要做一些像grep当前构build文件的输出,以查找string,如errorwarning呢?

我想强调他们,我想在编译器输出调用sed来改变一些单词的颜色…

PRINT定义开始处的@符号会抑制命令打印。

尝试这个:

 %o : %.cpp $(PRINT) $(COMPILE_cpp) 

$(COMPILE_cpp)是你的第一个版本。 不要忘记制表符缩进配方命令, 而不是空格。