linux - Makefile目标颜色输出

标签 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 当前构建文件的输出的操作,以便查找诸如 error 之类的字符串,该怎么办?或warning

我想强调一下它们,我正在考虑调用 sed在编译器输出上更改一些单词的颜色...

最佳答案

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

试试这个:

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

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

关于linux - Makefile目标颜色输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24139328/

相关文章:

Linux 命令 : Why does the redirection operator - | i. e。管道在这里失败?

reporting-services - 根据表情更改颜色

c - 发生 fatal error 时如何重新启动Linux系统(C编程)

linux - BASH - 将包含二进制数的文本文件转换为二进制文件

bash - 我可以返回并更改之前在 Bash 中重复的一行吗?

javascript - 颜色 slider 渐变

html - 在较小的屏幕上查看时,CSS 菜单切换颜色不正确

c - 在 C 中删除原始文件的符号链接(symbolic link)

linux - 隐藏 Unix Shell 脚本后台进程输出

bash - 防止 bash 完成两次打印回复