文章目录
- 1 makefile的概述【只针对Linux有效】
- 1.1 make
- 1.2 makefile
- 1.3 采用makefile的好处
- 2 Makefile的语法规则
- 3 makefile变量
- 3.1 自定义变量
- 3.2 系统环境变量
- 3.3 预定义变量
- 4 伪目标
- 5 最终版本Makefile
1 makefile的概述【只针对Linux有效】
1.1 make
make
是个命令,是可执行程序,用来解析makefile
。(Linux自带)GNU make
是一种代码维护工具。make
工具会根据makefile
文件定义的规则和步骤,完成整个软件项目的代码维护工作。- 一般用来简化编译工作,可以极大地提高软件开发的效率。
- 在
windows
下一般由集成开发环境自动生成。 - 在
Linux
下需要由我们按照语法自己编写。
1.2 makefile
makefile
是个文件,这个文件中描述了咱们程序的编译规则。- 咱们执行
make
命令的时候,make
命令会在当前目录下找makefile
文件。 - 根据
makefile
文件里的规则,编译咱们的程序。
1.3 采用makefile的好处
- 简化编译程序的时候输入得命令,编译的时候只需要敲
make
命令就可以了。 - 可以节省编译时间,提高编译效率。
2 Makefile的语法规则
目标:依赖文件列表
<tab>命令列表
- 目标:就是需要生成的文件。
- 依赖文件:通过依赖文件生成目标文件。
- 命令列表:实现将依赖文件生成目标文件。
make
命令默认在当前工作目录下寻找名为GNUmakefile
、makefile
、Makefile
的文件。
3 makefile变量
3.1 自定义变量
变量名=变量值
取变量值 --> $(变量名)
num=10
$(num)
3.2 系统环境变量
make
会识别系统环境变量。
3.3 预定义变量
4 伪目标
.PHONY:clean
clean:rm -rf ***
5 最终版本Makefile
# 指定编译器
CC=gcc # 目标文件
TARGET=main # 获取 当前目录 所有的.c文件
SRC=$(wildcard *.c) # 将所有的.c 转换成对应的.o
OBJS=$(patsubst %.c, %.o, $(SRC)) $(TARGET):$(OBJS) $(CC) $^ -o $@ %.o:%.c $(CC) -c $< -o $@ # 伪目标
.PHONY:clean
clean: rm -rf *.o $(TARGET)