最近法make info的命令比较好用,例如:
info:
@echo $(SRCS)
@echo $(OBJS)
@echo $(DEPS)
但是发现输出的内容太多,就有了为输出上些色的想法
在网上搜索相关内容,发现这一篇比较靠谱,简单说,流程如下
- 在待转换的前面添加序列(例如红色)
\e[31m
- 在后面清除设置
\e[0m
在bash中命令如下:
echo "\e[31m test \e0m"
但在makefile中这一句没有用,查阅文档,找到了相关问题,原因应该是\e
表示转义序列的开始,而该转义字符是被bash直接解释的(bash会转义双引号“
内的字符序列),而在makefile里并没有这一步。
解决方法是直接使用另一种转义方式—\033
,使用八进制表示ascii中的ESC字符,即\e
,在makefile中测试如下
info:
@echo "\033[31m test \033[0m"
得到预期结果
在bash中进一步测试
echo '\e[31m test \e[0m'
无法得到红色
echo -e '\e[31m test \e[0m'
echo -e '\033[31m test \033[0m'
均为红色
注:make版本为4.1,不过我觉得并没有影响