makefile* 可以看懂makefile文件就可以了
src 源文件 .c .h
Makefile: 一段代码,执行这个代码能够自动生成一个库
命名 makefile/Makefile
makefile规则:
一个文件可有一个或多个规则
目标…: 依赖…
命令
…
makefile中的变量
预定义变量
ar:归档,打包
cc: c compiler
cxx:c++ compiler g++
$@ 目标的完整名称
$< 第一个依赖文件的名称
$^ 所有依赖文件
$(变量名) 获取变量的值
模式匹配
%.o:%.c
src =sub.o add.o mult.o div.o main.o //要使用的源文件
target= app //app是要生成的目标文件
$(target):$(src) //获取目标文件的值: 依赖源文件
$(CC) $(src) -o $(target) // 命令
%.o:%.c // % 是通配符 目标是生成.o文件:依赖于.c 文件
$(CC) -c $< -o $@ //规则
Makefile中的函数:
$(wildcard pattern…) //获取指定目录下的制定类型的文件列表
$(pastsubst <pattern>,<replacement>,<text> ) \查找text中的单词是否符合模式pattern,如果匹配就用replacement代替
//返回 a.c b.c c.c d.c
$(wildcard *.c ./sub/*.c)
//返回 x.o bar.o
$(pastsubst %.c,%.o,x.c bar.c)
src = $(wildcard ./*.c) //源文件是 获取目录下的.c文件
objs=$(patsubst %.c, %.o, $(src)) //目标文件是.o 文件,但目录下没有.o文件,所以需要使用到替换这个函数
target= app
$(target):$(src)
$(CC) $(objs) -o $(target)
%.o:%.c
$(CC) -c $< -o $@
clear: //清除
rm $(objs) -f