【Makefile】命令执行选项

机器感知

一个专注于SLAM、机器视觉、Linux 等相关技术文章分享的公众号
 

      

GNU make 支持同时执行多条命令。通常情况下,同一时刻只有一个命令在执行,下一个命令只有在当前命令执行完成之后才能够开始执行。不过可以通过 make 的命令行选项“ -j”或者“ --job”来告诉 make 在同一时刻可以允许多条命令同时被执行(注意,在 MS-DOS 中此选项无效,因为它是单任务操作系统)。如果选项“ -j”之后存在一个整数,其含义是告诉 make 在同一时刻可允许同时执行命令的数目。这个数字被称为“ job slots”。当“ -j”选项之后没有出现一个数字时,那么同一时刻执行的命令数目没有要求。使用默认的“ job slots”,值为 1。表示 make将串行的执行规则的命令(同一时刻只能有一条命令被执行)。

       规则中的命令在运行结束后, make 会检测命令执行的返回状态,如果返回成功,那么就启动另外一个子 shell 来执行下一条命令。规则中的所有命令执行完成之后,这个规则就执行完成了。如果一个规则中的某一个命令出错(返回非 0 状态), make就会放弃对当前规则后续命令的执行,也有可能会终止所有规则的执行。一些情况下,规则中一个命令的执行失败并不代表规则执行的错误。例如我们使用“ mkdir”命令来确保存在一个目录。当此目录不存在使我们就建立这个目录,当目录存在时那么“ mkdir”就会执行失败。其实我们并不希望 mkdir 在执行失败后终止规则的执行。为了忽略一些无关命令执行失败的情况,我们可以在命令之前加一个减号“ -(在[Tab]字符之后),来告诉 make 忽略此命令的执行失败。命令中的“ -”号会在 shell解析并执行此命令之前被去掉, shell 所解释的只是纯粹的命令,“ -”字符是由 make来处理的。

      参数“ -n”、“ -t”和“ -q”不影响之前带+号和包含$(MAKE)的命令行的执行。当规则命令行中变量MAKE时,可以改变make的“ -t”(“ --touch”),“ -n”(“ --just-print”)和“ -q”(“ --question”)命令行选项的效果。它所实现的功能和在规则中命令行首使用字符“ +”的效果相同。变量“ MAKE”的这个特点是:在规则的命令行中如果使用变量“ MAKE”,标志“ -t”、“ -n”和“ -q”在这个命令的执行中不起作用。尽管这些选项是告诉 make 不执行规则的命令行,但包含变量“ MAKE”的命令行除外,它们会被正常执行

通常, make 在执行命令行之前会把要执行的命令行输出到标准输出设备。我们称之为“回显”,就好像我们在 shell 环境下输入命令执行时一样。但是,如果规则的命令行以字符@开始,则 make 在执行这个命令时就不会回显这个将要被执行的命令
 



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值