Makefile目标颜色输出

时间:2014-06-10 11:00:45

标签: linux bash colors makefile

我写了一个工作正常的Makefile;我不完全发布它,只是它正在调查的部分:

COMPILE_cpp = $(CXX) $(CFLAGS) -o $@ -c $< $(MAKEDEP) $(INCLUDES)

%.o : %.cpp ; $(COMPILE_cpp)
.SUFFIXES: .o .cpp

上述代码尽职尽责。由于构建过程涉及许多文件,我想添加一些颜色输出。我试过以下

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)的输出。命令字符串$(CXX) $(CFLAGS) -o $@ -c $< $(MAKEDEP) $(INCLUDES)已正确执行,但不再打印到屏幕上;我仍然可以看到最终的警告和错误。

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

提前致谢!

修改 稍微补充一下:如果我想做grep当前构建文件的输出以查找errorwarning等字符串,那该怎么办?

我想突出显示它们,我正在考虑在编译器输出上调用sed来改变一些颜色的颜色......

1 个答案:

答案 0 :(得分:2)

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

试试这个:

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

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