显示规制
#hello 输出目标
#gcc hello.c -o hello 编译规则
# 编译规则 TAB 空格
hello:
gcc hello.c -o hello
hello : 依赖的目标的是空 ,每一次编译用 hello 和当前目录下 hello 文件进行比较
显示规则 (明白写出编译规则)
隐示规制
变量
变量=变量值
TAR=hello
追加方式:
变量+=变量值1
变量+=变量值2
变量的解引
$(TAR)
Makefile 脚本
1 #———————————————————————————————–
2 # hello Makefile target
3 #
4
5
6 # 显示规制
7 #hello 输出目标
8 #gcc hello.c -o hello 编译规则
9 # 编译规则 TAB 空格
10 #目标 hello 依赖的是 hello.c (每次编译都对这两个文件的保存时间)
11 # 依赖的目标必须存在
12
13#递归思想
14
15 GCC=gcc 编译器选型
16 CXX=c++
17
18 CLFLAG=-I ./include -Wall -g 路径: I 标准库 ./include 自定义头文件 -Wall 警告 -g 调试
19 LIB = ./lib/lib_max.so ./lib/lib_min.so -lm 自定义动态库,,数学标准库
20
21 ALL+=hello.o 前缀以hello为名的源文件
22 ALL+=test.o 前缀以hello为名的源文件
23
24 TAR=hello 可执行文件
25 # 解引变量26(TAR):(ALL) #hello:hello.0 test.o
27(GCC) (ALL)−o(TAR) (CLFLAG)(LIB)
gcc hello.o test.o -o hello -I ./include -Wall -g ./lib/libget_str_len.so ./lib/lib_max.so ./lib/lib_min.so -lm
28 rm -f (ALL) #rm -f hello.o test.o
29
30 # .o 是放在 @ , .c 放在 < ; %:通配符 -> 自动提取出名字 tsst.o: test.c (自动提取相同前缀名)
31 %.o:%.c
32(GCC) -c <−o@ (CLFLAG)333435(GCC) -c <−o@ (CLFLAG)3637(CXX) -c <−o@ (CLFLAG)
38
39 # 定义一个伪目标
40 .PHONY:clean
41 clean:
42 rm -f(ALL) $(TAR)
43
44
45
46
47 # 输出目标: @
48 # 依赖的目标 :<
49 ————————————————————————————————