使用tput和make

时间:2018-04-11 04:09:58

标签: gnu-make gnu tput

我希望使用tput对makefile中的输出进行一些格式化。例如:如果您只需输入

echo $(printf '%*s' "${COLUMNS:-$(tput cols)}" '' | tr ' ' –)

作为shell中的命令,它将输出一个跨越终端窗口整个宽度的漂亮线。

我想知道是否有任何方法可以在makefile中进行此操作?以下仅产生一个空行:

lineTest:
    @echo $$( printf '%*s' "${COLUMNS:-$(tput cols)}" '' | tr ' ' – )

绝对是一个愚蠢的问题,但如果你碰巧知道的话请发信息。

1 个答案:

答案 0 :(得分:3)

您必须转义要传递的所有$。你只逃过了第一个。另外我不知道为什么你在子shell中调用printf然后回显结果...... ??

这对我有用:

lineTest:
        @printf '%*s\n' "$${COLUMNS:-$$(tput cols)}" '' | tr ' ' -

我应该指出,如果你在启用并行构建的情况下调用make,这将无法可靠地工作,因为在并行模式下,并非所有作业都可以访问终端。