Makefile中的+/- 符号

make 通常会在命令运行结束后检查命令的执行的返回状态,如果返回成功,那么就启动一个子 shell 来执行下一条命令; 如果在中途检测到有执行出错的情况(返回非 0 状态),那么就会放弃对当前规则后续命令的执行,甚至会终止所有规则的执行。但在某些情况下,规则中一个命令执行失败并不代表整个规则执行错误,所以完全可以忽略这条可能执行失败的命令,其忽略的方法是在命令前添加一个 '-' 符号。在 Makefile 经常看到在 include 面前添加 '-' 符号:-include ,这时当当 include 包含的文件不存在时也不会造成整个 Makefile 解析的终止。又如,当一条 rm 命令前添加 ‘-’ 符号时,如果要删除的文件不存在或删除文件失败也不会对整个流程有任何影响。

除了 '-' 符号外,还可以看到 '+' 符号,它的意思和 '-' 相反,表示不忽略。这就意味着,像 make 的命令行选项 -n(--just print), -t(touch) 并不影响之前带 '+' 符号的命令的执行。像 -n 选项,一般情况下,它只是在解析命令,而不真正执行它们,但是命令前使用了 '+' 就后 -n 选项就不能阻止命令被执行。如一个目录下有这几个文件:

引用
$ ls
Makefile  test2.txt  test.txt

Makefile 的内容为:
?
1
2
3
all:
     @ rm -f   test .txt
     +@ rm -f test2.txt

使用 -n 选项来运行 make:
引用
$ make -n
rm -f  test.txt
rm -f test2.txt

再检查一下当前目录:
引用
$ ls
Makefile  test.txt

可见 test2.txt 已经被删除。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值