Suppress and ignore output for Makefile?
我知道
实际上,
相反,您可以使用
1 | @command || true |
或者,由于
1 | @command ||: |
这通常是更好的做法,因为它避免了Make的混淆警告,即在看不见的命令中忽略了错误。
考虑两种最常见的情况,您可能想忽略命令的返回值:
对于第二种情况,请考虑对命令生成的日志文件中的警告进行grepping的示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | .PHONY: all one two three all: at-warning at-success or-success or-warning at-%: %.log @echo Making $@ @-grep ^Warning $< or-%: %.log @echo Making $@ @grep ^Warning $< ||: success.log: echo 'Success!' > $@ warning.log: echo 'Warning: foo' > $@ clean:: rm -f {success,warning.log} |
产生:
1 2 3 4 5 6 7 8 | echo 'Warning: foo' > warning.log Making at-warning Warning: foo Making at-success make: [at-success] Error 1 (ignored) Making or-success Making or-warning Warning: foo |
成功时,使用
从理论上讲,使用
GNU make确实允许您组合
1 2 | all: @-exit 1 |
使用gmake 3.81运行它会产生以下输出:
gmake: [all] Error 1 (ignored)
如您所见,未回显该命令,并且按预期方式忽略了该错误。