1.make
gcc - 编译器
make - linux自带的构建器,make工作在gcc之前
构建的规则在makefile文件中
2.makefile文件的命名
makefile/Makefile
3.makefile中的规则
3.1 三部分:目标,依赖,命令
基本结构:
目标:依赖
(tab缩进)命令
3.2 在实际项目开发中的两个版本
版本一:效率非常低
app:a.c b.c c.c
gcc a.c b.c c.c -oapp
版本二:效率很高,但是沉余,判断依赖是否存在,判断是否需要跟新
app:main.o sub.o add.o mul.o
gcc main.o add.o sub.o mul.o -oapp
add.o:add.c
gcc add.c -c
sub.o:sub.c
gcc sub.c -c
mul.o:mul.c
gcc mul.c -c
main.o:main.c
gcc main.c -c
版本三:可移植性不好
自定义变量:obj=a.o b.o c.o
变量的取值:aa=$(obj)
makefile自带的变量
CppFLAGS:预处理的时候需要加的参数
CC:
makefile自动变量:
$@:规则中的目标
$<:规则中的第一个依赖
$>:规则中的最后一个依赖
版本三:实例
obj = main.o sub.o add.o mul.o
target = app
$(target):$(obj)
gcc $(obj) -o $(target)
%.o:%.c
gcc -c $< -o $@
版本四:
几个函数:
wildcard:查找指定目录下指定类型的文件
src = $(wildcard ./*.c)
patsubst:匹配替换
obj = $(patsubst %.c,%.o,$(src))
版本四实例:
src = $(wildcard ./*.c)
obj = $(patsubst %.c,%.o,$(src))
target = app
$(target):$(obj)
gcc $(obj) -o $(target)
%.o:%.c
gcc -c $< -o $@
版本五:项目清理
.PHONY:clean //这个一般都要加上
clean:
rm $(obj) $(target) -f
make与makefile
猜你喜欢
转载自blog.csdn.net/liujun5319/article/details/82009377
今日推荐
周排行