目录
1.makefile
1.1makefile的规则
1.2两个函数
1.3三个自动变量
1.3.1普通变量 (自定义变量)
1.3.2自动变量
1.3.3其他关键字
- ALL/all
- clean
1.makefile
- 作用:进行项目管理。
- 初步学习:1个规则、2个函数、3个自动变量。
- 要想使用默认的make命令,管理项目。makefile文件名:必须是 “makefile” 或 “Makefile”
1.1makefile的规则
语法:
目标:依赖条件
(一个tab缩进)命令
举例:
- 目标的时间,必须晚于依赖条件的时间,否则,更新目标。
- 依赖条件,如果不存在,寻找新的规则去产生依赖条件。
举例:
1.2两个函数
wildcard 函数:用来匹配文件名,得到字符串
src = $(wildcard ./*.c) : 匹配当前工作目录下的所有.c文件。将文件名组成列表,赋值给变量 src
相当于: src = add.c sub.c mul.c
patsubst 函数:用来字符串替换
obj = $(patsubst %.c, %.o, $(src)) : 将 参3 中,包含 参1的部分,替换为 参2.
相当于: obj = add.o sub.o mul.o
obj = $(patsubst %.c, %, $(src))
相当于: obj = add sub mul
举例:
可以替换为:
1.3三个自动变量
1.3.1普通变量 (自定义变量)
- 定义变量语法:变量名 = 变量值 (都是字符串)
- 举例:foo = abc
- 取变量值语法:$(变量)
- 举例:bar = $(foo) ===> bar = abc
- makefile 自带变量:
- CC = cc
- CPPFLAGES
- CFLAGES
- LDFLAGES
1.3.2自动变量
- $@: 在规则的命令中,表示规则中的目标。
替换为
- $^: 在规则的命令中,表示所有依赖条件。
- $<: 在规则的命令中,表示第一个依赖条件。如果将该变量应用在 “模式规则” 中,它可以将依赖条件列表中的每一个依赖,依次取出,套用模式规则。
替换为
1.3.3其他关键字
- ALL/all:
- 用来给 makefile 文件,指定 “终极目标”。
- makefile 文件,默认的规则为:从上而下,碰到的第一个 规则中的目标,为 “终极目标”。我们可以使用 ALL 指定终极目标。
- clean:
- 用来 借助 makefile 清除项目中的指定文件。如:*.o、a.out
- 举例: