每个规则中的命令和OS的shell命令是一直的,make会按照顺序一条条的执行命令,每个命令的开头必须以TAB开头,除非命令紧跟在依赖规则后面的分号后面。make命令默认是被“/bin/sh”执行。Makefile中“#”表示注释。
一、显示命令
通常make会在命令执行前将命令输出在屏幕上,但在命令前有字符@时,那么该命令就不被make显示出来。
如
`"@echo 正在编译XXX某模块"`
则意味着执行到此只输出
"正在编译****某模块"
如果没有加@,则会输出
"echo正在编译****某模块"
如果make执行时,输入参数”-n”或者”–just-print”,则只显示命令,不执行;
make参数“-S”或者“-slient”全面禁止命令的显示。
二、命令的执行
如果希望上一条命令的结果用于下一条命令,应该适用分隔号分割命令,如希望cd后执行pwd,则应
exec:
cd /home/example;pwd
三、命令出错
每当命令执行完后,make会检查一个返回码,如果返回成功,则执行下一条命令,如果出错,则make会终止当前执行规则或者终止所有执行。
a、不管命令出不出错均成功,在命令前加上“-”
如
-rm -f *.o
b、全局的办法:make加参数“-i”或者“–ignore-errors”,Makefile中所有命令均会忽略错误。
c、如果一个规则以“IGNORE”作为目标,则该规则中所有命令均会忽略错误;
d:make的参数“-k”或者“–keep-going”,表示如果某规则中的命令出错,终止该规则的执行,但执行其他规则。