补充上一章遗漏的知识点 ; && \ :嵌入式Linux学习-Makefile基本语法:目标、依赖、命令、伪目标.PHONY-CSDN博客
本文提到的 ; && \ 三个基础符号的用法来源于以下链接。
Makefile基础 - Makefile教程 - 廖雪峰的官方网站
个人总结:&&是分号;的优化产品,两个符号都用在执行多条命令的情况下使用,更多是用在需要执行cd切换目录的指令的时候。
当命令1执行失败时,连接在&&后面的命令不会被执行。
cd_ok:
abc123 && echo "ok1"
当命令1执行失败时,连接在;后面的命令依旧会被执行
cd_ok:
abc123 ; echo "ok2"
make 有一条默认规则,当找不到 xxx. o 文件时,会查找目录下的同名xxx.c 文件进行编译。
如下所示
.PHONY:clean
main:main.o input.o calcu.o
gcc -o main main.o input.o calcu.o
clean:
rm *.o
rm main
现象如下:
zwh@zwh-virtual-machine:~/makefile/part_1$ ls
calcu.c calcu.h input.c input.h main.c Makefile
zwh@zwh-virtual-machine:~/makefile/part_1$ sudo make
cc -c -o main.o main.c
cc -c -o input.o input.c
cc -c -o calcu.o calcu.c
gcc -o main main.o input.o calcu.o
zwh@zwh-virtual-machine:~/makefile/part_1$ ls
calcu.c calcu.o input.h main main.o
calcu.h input.c input.o main.c Makefile
zwh@zwh-virtual-machine:~/makefile/part_1$ ./main
input two num:3 7
3 * 7 = 21
C 自动编译成 *.o 的默认规则有个缺陷,由于没有显式地表示 *.o 依赖于.h 头文件,假如我们修改了头文件的内容,那么 *.o 并不会更新,这是不可接受的。