MakeFile项目管理工具【编写MakeFile脚本管理用户项目】
1:MakeFile项目管理工具的作用:
A:编译管理用户代码
B:节省编译的时间【识别最近改动的代码,对其进行更新编译,与旧文件连接生成新的APP】
2:MakeFile的三要素
目标:依赖
命令
3: 注意事项:
Makefile在默认的情况下只是执行第一个目标
MAKEFILE从上到下建立依赖关系,从下到上开始执行
4:MakeFile 中的没有依赖的目标【功能目标】
A: clean【删除】
实例:删除项目中的中间文件*.o
clean:
rm *.o -rf
如果在项目中含有与关键字clean相同的clean文件的时候,可以采用.PHONY:clean的方式来实现删除同名的 clean文件
.PHONY: 关键字的作用是: 在设置目标时,如果当前项目中的路径中含有与该伪目标同名的文件的时候忽略这个 文件。
实例 : .PHONY:clean
clean:
rm *.o -rf
为了保证再删除的时候不出现错误,可以使用特殊的参数"-"
实例:在删除clean文件的时候,为了保证文件中因为不存在clean文件从而产生错误,可以在删除命令的前面加上 一个‘-’来避免产生错误
.PHONY:clean
clean:
-rm clean -rf
B:print【输出】
实例:在成序指向的时候输出一句话“nice to meet you ”:
print:
echo "nice to meet you"
此时所得到终端产生的结果中会发现输出的结果中含义命令字段,为了不出现命令字段只出现输出的话,可以 在命令的前面加上一个特殊的参数‘@’
print:
@echo "nice to meet you"
5:将军MAKEFILE
实例:make: ./src/Makefile
make -C ./src/
.PHONY:clean
clean:
make clean -C ./src/
实现的功能分析: 在资源文件SRC目录的外部创建一个将军 MAKEFILE 用来管理SRC中的 MAKEFILE,并滴 用了内部的MAKEFILE中的删除的功能
6:复用性能较好的MAKEFILE
实例:SRC=$(wildcard *.c) //wildcard的功能是取出项目中的所有以.c结尾的文件名的文件
DES=$(patsubst %.c,%.o,$(SRC)) //patsubst实现的功能是将.c 结束的 文件转化为.o 结束的文件
app:$(DES) //建立APP的依赖关系
gcc $(DES) -o app
%.o:%.c //建立*.o的依赖关系
gcc $< -I../include -c
print: //终端的测试显示
@echo "SRC=$(SRC)"
@exho "DES=$(DES)"