0 Preface/Foreword
在makefile中,默认情况下make在执行每条命令之前都会先将该命令打印到标准输出(命令回显)。
1 关闭命令回显方法
1.1 默认打开命令回显
CC ?= g++ override MODE = debug var_print: echo "compiler: $(CC)" echo "mode: $(MODE)" make -f sub_test.mk1.2 手动关闭回显 (@)
手动关闭回显方法:在命令前面添加符号@。
CC ?= g++ override MODE = debug var_print: @echo "compiler: $(CC)" @echo "mode: $(MODE)" @make -f sub_test.mk1.3 通过hide封装@ (Android构建系统)
在一些大型项目(比如Android源码编译)的makefile中,通常会定义一个hide变量来统一控制回显。
CC ?= g++ MODE = debug hide := @ var_print: $(hide) echo "compiler: $(CC)" $(hide) echo "mode: $(MODE)" $(hide) make -f sub_test.mk1.4 make -s或make --silent
-s或--silent会全局禁止所有命令的回显,这会抑制所有规则中命令的打印,包括make读入下一层级的makefile文件路径的提醒。
CC ?= g++ MODE = debug hide := "" var_print: $(hide) echo "compiler: $(CC)" $(hide) echo "mode: $(MODE)" $(hide) make -f sub_test.mk