Makefile
Makefile是一系列编译指令组成的可执行文本文件,也叫编译脚本
在终端执行make 命令,就会自动执行Makefile脚本文件中的编译指令,它可以根据文件的最后修改时间来判断哪些文件需要重新编译、哪些不需要重新编译,从而提高编译效率
编译规则:
1. 如果这个工程没有编译过,那么我们的所有 c 文件都要编译并被链接。
2. 如果这个工程的某几个 c 文件被修改,那么我们只编译被修改的 c 文件,并链接目标程序。
3. 如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的 c 文件,并链接目标程序。
一个最简单Makefile格式: a.c a.h tools
执行目标:依赖a.o b.o c.o
编译指令
被依赖的目标1:依赖文件
编译指令
被依赖的目标2:依赖文件
编译指令
...
edit : main.o phonebook.o tools.o
gcc -c edit main.o phonebook.o tools.o
main.o : main.c main.h
gcc -c main.c
phonebook.o : phonebook.c phonebook.h
gcc -c phonebook.c
tools.o : tools.c tools.h
gcc -c tools.c
通用:
CC=gcc
BIN=mail
OBJ=main.o phonebook.o tools.o
STD=-std=gnu99
FLAG=-Wall -werror
LD=-lm
INCLUDE=-I.
all:$(OBJ)
$(CC) $(OBJ) -o $(BIN) $(LD)
%.o:%.c
$(CC) $(STD) $(FLAG) -c $< -o $@
clean:
rm -rf $(BIN) $(OBJ)
2048游戏:
文件规则:
main.c 程序入口
game2048.c game2048.h 游戏的业务逻辑
direction.c direction.h 四个方向处理功能
tools.c tools.h 工具函数
Makefile 编译脚本