编写Makefile及简单分析

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 
编写Makefile及简单分析_第1张图片
目录结构.png

可以定义变量 ObjFiles=main.o add.o sub.o div.o …
变量的使用:$(ObjFiles),$(变量名)

makefile的隐含规则:默认处理第一个目标

函数:

  • wildcard 可以进行文件匹配
  • patsubst 内容的替换

Makefile的变量:

  • $@ 代表目标
  • $^ 代表全部依赖
  • $< 第一个依赖
  • $? 第一个变化的依赖

@在规则前代表不输出该条规则的命令
规则前的"-",代表该条规则报错,仍然继续执行

定义伪目标:all
使用.PHONY 防止目标有歧义
使用-f 强制删除

你可能感兴趣的:(编写Makefile及简单分析)