makefile的好处:一次编写,终身受益
makefile的命名规则:
- makefile
- Makefile
makefile的三要素:
- 目标
- 依赖
- 规则命令
写法:
目标:依赖
tab键规则命令
#get all .c files
SrcFiles=$(wildcard *.c)
#all .c files --> .o files
ObjFiles=$(patsubst %.c,%.o,$(SrcFiles))
all:app app1
#目标文件用法 $(Var)
app:$(ObjFiles)
gcc -o $@ -I./include $(ObjFiles)
app1:$(ObjFiles)
gcc -o $@ -I./include $(ObjFiles)
#模式匹配规则,$@,$< 这样的变量,只能在规则中出现
%.o:%.c
gcc -c $< -I./include -o $@
test:
@echo $(SrcFiles)
@echo $(ObjFiles1)
#定义伪目标,防止有歧义
.PHONY:clean all
clean:
-@rm -f *.o
-@rm -f app app1
目录结构.png
可以定义变量 ObjFiles=main.o add.o sub.o div.o …
变量的使用:$(ObjFiles),$(变量名)
makefile的隐含规则:默认处理第一个目标
函数:
- wildcard 可以进行文件匹配
- patsubst 内容的替换
Makefile的变量:
- $@ 代表目标
- $^ 代表全部依赖
- $< 第一个依赖
- $? 第一个变化的依赖
@在规则前代表不输出该条规则的命令
规则前的"-",代表该条规则报错,仍然继续执行
定义伪目标:all
使用.PHONY 防止目标有歧义
使用-f 强制删除
网友评论