make的解释规则
[x]对象:依赖的对象文件(第一行执行成功就退出,否则就往下找)
[x]make打开makefile文件之后,找寻第一个目标对象名称
若没有找到:认为没有生成的对象,报错退出
若找到了:判断对象文件是否存在,
若对象文件存在,则向下查找,执行下一行命令
这个就是正确的
这个就是错误的
Makefile文件的输入规则
(#是自己定义的注释)
1 main:main.o #目标对象:依赖对象
2 gcc main.o -o main #生成命令
3 main.o:main.c
4 gcc -c main.c -o main.o
5 --------------------------------------------------------------
6 main:main.o child.o #目标对象:依赖对象
7 gcc main.o -o main
8 %.o:%.c # %通配符
9 gcc -c main.c -o main.o #不合适
10 预定义变量
11 $@ 目标对象
12 $^ 所有的依赖对象
13 $< 依赖对象的第一个
14 --------------------------------------------------------------
15 main:main.o child.o #目标对象:依赖对象
16 gcc $^ -o $@ #生成命令
17 %.o:%.c
18 gcc -c $< -o $@
19 --------------------------------------------------------------
20 SRC = $(wildcard ./*.c) # 获取当前文件下所有.c文件结尾的文件名称
# wilecard 和patscbst 都是关键字
21 OBJ = $(patsubst %.c, %.o , $(SRC)) #将SRC中文件名进行修改,把.c置换成.o
22 main:$(OBJ)
23 gcc $^ -o $@
24 %.o:%.c
25 gcc -c $< -o $@
26 clean: #.PHONY:clean 生产一个伪对象---不管外部有没有clean文件, # 代码都会被执行到(不管对象是否是最新,是否存在都会是执行)
27 rm *.o main #Makefile中只会生成第一个目标对象,所以执行make,不会执行到这一行
28 #要想执行这一行,就要在外部输入 make clean
29 --------------------------------------------------------------
Makefile中的变量赋值方式各有不同
= | https://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html |
:= |
|
?= |
|
+= |
|
|
|