Debian 12下Makefile如何抑制任务输出?除-s外还有其他方法吗?
解决Makefile中抑制命令输出的方法
你有多种方式可以抑制命令的输出,不需要每次执行make时手动加重定向参数:
直接在命令后添加重定向:修改Makefile中的命令,将标准输出和错误输出直接导向
/dev/null,执行make todo时就不会看到任何输出:todo: su - user -c "/mypath/dothis" > /dev/null 2>&1若只想抑制标准输出、保留错误输出,仅写
> /dev/null即可;反之要保留标准输出、抑制错误输出则用2> /dev/null。结合
@隐藏命令本身+重定向:如果同时不想让make打印执行的命令(类似-s选项的效果),可在命令前加@符号,再配合重定向:todo: @su - user -c "/mypath/dothis" > /dev/null 2>&1用变量统一控制输出:如果有多个命令需要控制输出,可定义变量实现统一修改:
# 默认抑制输出,调试时可改为 QUIET := 取消抑制 QUIET := > /dev/null 2>&1 todo: su - user -c "/mypath/dothis" $(QUIET)
另外需要注意,-s选项或.SILENT目标仅能隐藏make打印的命令本身,无法抑制命令执行产生的输出,处理命令输出仍需依靠重定向方式。
内容的提问来源于stack exchange,提问作者user2239318
相关产品推荐
相关产品推荐

