规则的命令是由一些shell命令行组成,被一条一条执行。
通常系统中存在不同的shell,但在make处理Makefile过程中,如果没有明确指定,那么对所有规则中的命令行解析使用 “/bin/sh” 完成。
1. 命令回显
回显是指在执行命令之前将要执行的命令输出到标准输出设备。
@参数:
如果命令行以 @ 开始,则make在执行这个命令时不会回显这个要被执行的命令。
比如:
@echo 开始编译
输出为:开始编译
echo 开始编译
输出为:echo 开始编译
-n 或 --just-print参数:
make在执行时只显示所要执行的命令,但不会真正去执行这些命令。
-s 或 --slient参数:
禁止所要执行命令的显式,就好像所要的命令均使用@开始一样。
2. 命令的执行
2.1 独立执行
当多行命令时,每一行的命令将在一个独立的子shell进程中执行,执行是相互独立的。
同一行的多个命令属于一个完整的shell命令行。
2.2 并发执行
使用-j 或者 --job使得make在同一时刻可以允许多条命令同时执行。
并发执行的问题:
- 多个同时执行的命令输出信息将同时被输出到终端。
- 同一时刻多个执行命令的进程中只能有一个进程获得标准输入,其他需要读取的标准输入流的进程由于输入流无效而导致错误。
3. 命令执行的错误
如果一个规则中的某一个命令出错,make就会放弃对当前规则后续