命令
make命令实质上是一个单行shell脚本。实际的执行过程是:make先检查命令中是否有特殊字符(可能影响当前程序的行为),如果没有,就直接执行;如果有,就将其传递给subshell执行(使用fork/exec)。
make命令默认会交给/bin/sh
执行,这由SHELL
变量指定,出于可移植性的考虑,一般不建议修改。(不过改成bash还是可以接受的)
命令的解析
在工作目标之后,凡是第一个字符是tab的文本一律被视为命令(触发上一行结尾是反斜线)。因此,以tab开头的注释(# …)为shell注释,也会出现在console中。而以空格(无论多少个)开头的注释则为make注释,会被直接忽略。
make可以识别命令末尾的反斜线,已将其视为同一个命令,如:
1 | .INTERMEDIATE: file_list |
这里补充一点,上一篇中提到过.INTERMEDIATE生成的文件最后会被删除,但是如果运行make file_list,这个规则就不是中间过程,生成的文件也不会被删除。
再举一个cd的例子:
1 | TAGS: |