我写了一个工作正常的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当前构建文件的输出以查找error
或warning
等字符串,那该怎么办?
我想突出显示它们,我正在考虑在编译器输出上调用sed
来改变一些颜色的颜色......
答案 0 :(得分:2)
@
定义开头的PRINT
符号会抑制命令打印。
试试这个:
%o : %.cpp
$(PRINT)
$(COMPILE_cpp)
其中$(COMPILE_cpp)是您的第一个版本。 不要忘记制表符字符缩进配方命令,不空格。