You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Make的$(info)函数中输出前导空白实现缩进打印效果

问题原因

GNU Make 处理内置函数的参数时会自动修剪参数开头的所有空白字符,因此直接写在$(info 后的空格、制表符都会被删除,无法直接输出前导缩进。

可行解决方案

我们可以通过预先定义包含缩进空白的变量,绕过参数的前导空白修剪逻辑,全程仅使用$(info)实现,无额外性能损耗:

  1. 首先定义保留缩进的变量(可以按需调整空白长度,也可替换为制表符):
# 定义空变量作为占位符,避免缩进空白被Make自动修剪
NULL :=
# 此处两个NULL中间的内容就是你需要的前导缩进,下面示例为4个空格
INDENT := $(NULL)    $(NULL)

# 如果需要带前导短横线的缩进,可以这么定义(短横线后接3个空格)
INDENT_WITH_DASH := $(NULL) -   $(NULL)
  1. 调用$(info)时把缩进变量放在内容最前面即可:
# 输出纯缩进的内容
$(info $(INDENT)Is it possible to print me?)

# 输出带短横线前缀的缩进内容
$(info $(INDENT_WITH_DASH)Your custom content)
  1. 实际输出效果完全符合预期:
Is it possible to print me?
 -   Your custom content

该方案全程无额外进程调用,性能和原生$(info)完全一致,远优于调用echo的实现。

内容的提问来源于stack exchange,提问作者alx - recommends codidact

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 19:45:02