一、什么是Makefile
Makefile是一种编译脚本,里面记录的编译代码的命令的集合
二、为什么要使用Makefile
1、随着项目规模的不断增加,代码量越来越来多,为了更好的管理代码、协同工作,不得不把代码拆分、设计成多个文件
2、由于源文件过多,编译时命令不易写,编译时间过长,而使用Makefile可以多目录编译,一次编写循环利用,有效节约编译时间
3、Makefile中可以使用分支、循环、函数、系统命令,以来控制、优化编译的过程
三、为什么使用Makefile可以节约编译时间
make程序会检查所需要编译的文件的最后访问时间,如果与上次编译时一致,就不再编译,也就是说每次执行make命令,只编译部分源文件,重新的生成.o结尾的目标文件,然后再把所有的目标文件合并成可执行文件
四、如何写Makefile
CC=gcc 指定编译器
STD=-std=gnu99 指定编译标准
FLAG=-Wall -Werror 指定编译参数,把警告改为错误
OBJ=xx.o xx.o xx.o 目标文件都写在这里
BIN=xxx.bin 指定程序名
注意:
1、变量与执行目标都顶格写,不要有空格
2、执行目标中的编译命令一定要使用tab键缩进
3、#可以进行注释
五、一个简单的Makefile
CC = gcc
STD = -std=gnu99
INCLUDE= -I.
LIBS = -lm
FLAG = -Wall -Werror
OBJ = xx.o xx.o xx.o
BIN = xxx
# 执行目标
all:$(OBJ)
$(CC) $(OBJ) $(LIBS) -o $(BIN)
%.o:%.c
$(CC) -c $(FLAG) $(STD) $(INCLUDE) $< -o $@
# 清理目标文件、编译结果的执行目标
clean:
rm $(OBJ) $(BIN)