bash
一条规则可以有多行命令,按顺序执行
使用@不在终端打印命令本身
Normally make prints each line of the recipe before it is executed.
When a line starts with '@', the echoing of that line is suppressed.
The '@' is discarded before the line is passed to the shell.
默认情况下,每一行命令都在一个单独的shell中被执行
Makefile中命令扩展使用$(shell command)或者`command`,不要使用$(),$()是用来引用Makefile中的变量
-i:忽略过程中的错误,继续执行
bash
To ignore errors in a recipe line, write a '-' at the beginning of the line's text.
clean:
-rm -f *.o
This causes make to continue even if rm is unable to remove a file.
bash
make -C sub_dir#进入sub_dir中, 执行make命令
make -C sub_dir <target_name>#进入sub_dir中, 执行make命令, 指定target
#执行make -C sub_dir会打印下面信息,[]中的数字表示递归的层级
make[1]: Entering directory 'sub_dir的实际绝对路径'
在sub_dir目录下执行make产生的日志
make[1]: Leaving directory 'sub_dir的实际绝对路径'
https://www.gnu.org/software/make/manual/html_node/Recursion.html
https://www.gnu.org/software/make/manual/html_node/_002dw-Option.html
https://www.gnu.org/software/make/manual/html_node/Echoing.html