目录
make简介
make是一种代码维护工具
功能:
- 自动进行编译管理
- 自动发现更新的文档,提高编译效率
- 减少重复编译的时间
注:Makefile是make读入的唯一配置文件
Makefile语法
Makefile语法规则:
目标:依赖文件列表 <Tab>命令列表
Makefile语法规则解析:
目标:
产生文件的名称,可以是可执行文件,也可以是obj文件
依赖文件:
产生目标文件所需要的文件(可以没有,也可以有多个)
make命令
命令格式:
make [options] [targets]
[options] :
执行参数:辅助makefile执行
[targets]:
- make命令指定目标
- 例 make main
注:如不指定目标,默认实现makefile文件内第一个目标文件
Makefile输入规则
普通输入
代码示例
自定义变量输入
格式:
变量名=变量值
变量使用:
$(变量名)
代码示例obj=main.o add.o cc=gcc target=main $(target):$(obj) //可执行文件两个.o依赖文件 $(cc) $(obj) -o $(target) //产生可执行文件 main.o:main.c main.h add.h $(cc) -c main.c -o main.o //产生obj文件 add.o:add.c add.h $(cc) -c add.c -o add.o//产生obj文件 clean: rm $(obj) $(target) //make clean 可清除make产生的可执行文件和obj文件
预定义变量与自动变量输入
常用预定义变量:
- CC——编译器的名称
- CFLAGS——C编译器的选项
常用自动变量输入:
- $@——目标名
- $<——依赖文件列表中的第一个文件
- $^——依赖文件列表中除出去重复文件的部分
代码示例
obj=main.o add.o target=main $(target):$(obj) //可执行文件两个.o依赖文件 $(cc) $^ -o $@ //产生可执行文件 main.o:main.c main.h add.h $(cc) -c $< -o $@ //产生obj文件 add.o:add.c add.h $(cc) -c $< -o $@//产生obj文件 clean: rm $(obj) $(target) //make clean 可清除make产生的可执行文件和obj文件
模式规则输入(了解)
- 如果有很多组规则,只有文件名不同,可以采用模式规则简化Makefile
- 在模式规则中的文件名须用 “%”表示
代码示例
obj=main.o add.o target=main $(target):$(obj) //可执行文件两个.o依赖文件 $(cc) $^ -o $@ //产生可执行文件 %.o:%.c $(cc) -c $< -o $@ //产生obj文件 clean: rm $(obj) $(target) //make clean 可清除make产生的可执行文件和obj文件
隐式规则输入(了解)
隐式规则指出所有“.o”文件都可自动由“.c” 来生成
代码示例
obj=main.o add.o target=main $(target):$(obj) //可执行文件两个.o依赖文件 $(cc) $^ -o $@ //产生可执行文件