Makefile 不会显示颜色

Makefile 不会显示颜色

我目前正在尝试显示所有 Makefile 目标来构建一个make help命令,并且通过执行以下操作使其工作:

help:
    @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) \
    | sed -n "s/^\(.*\): \(.*\)##\(.*\)/$(printf '\033[0;1;31m')\1$(printf '\033[0m') \2 \3/p" \
    | column -t -s '##'

正如您在 sed 命令中看到的,我用红色显示第一列(目标名称)。

现在,当我在 shell 中运行此命令时,输出完全正常,颜色显示正常。但是当我运行 时make help,所有文本都变成白色。

我是否在命令中遗漏了某些内容,或者是否有办法为 Makefile 启用颜色?

答案1

您忘记通过将 部分$中的符号$(printf...)加倍为 来转义它们$$,因此make会执行该部分本身,并且不会找到扩展。如果您愿意,可以使用$(shell printf '\033[0;1;31m')让 make 运行该命令。

相关内容