Makefile
终版
CC =gcc RM = rm -rf FLAGS= -g -o OBJGEN = linklist #获取当前目录下的所有c文件 SRC = $(wildcard *.c) #将所有的.c 换成.o OBJS = $(patsubst %.c,%.o,$(SRC)) $(OBJGEN):$(OBJS) $(CC) $(FLAGS) $@ $^ %.o:%.c $(CC) -c $(FLAGS) $@ $< .PHONY:clean clean: $(RM) $(OBJS) $(OBJGEN)
1.0
hello:hello.c gcc -o hello hello.c #连接 hello:hello.o gcc -o hello hello.o #编译 hello.o:hello.S gcc -c hello.S -o hello.o #汇编 hello.S:hello.i gcc -S hello.i -o hello.S #预编译 hello.i:hello.c gcc -E hello.c -o hello.i .PHONY: clean: rm -rf hello.i hello.o hello.S hello echo gcc complete
2.0
Kindle:main.o kdb.o commond.o gcc -o Kindle main.o kdb.o commond.o main.o:main.c defs.h gcc -c main.c -o main.o kdb.o:kdb.c defs.h command.h gcc -c kdb.c -o kdb commond.o:commond.c commond.h defs.h gcc -c commond.c -o commond.o .PHONY: clean: rm -rf Kindle main.o kdb.o commond.o
3.0
OBJ = Kindle Target = main.o kdb.o commond.o display.o insert.o search.o files.o utils.o CC := gcc CCFLAG = -o -c $(OBJ):$(Target) $(CC) $(CCFLAG) Kindle main.o kdb.o commond.o display.o insert.o search.o files.o utils.o %.o:%.c gcc -c -o %.c %.o .PHONY: clean: rm -rf *.o Kindle echo "clean up"
4.0
OBJ = Kindle Target = main.o kdb.o commond.o display.o insert.o search.o files.o utils.o CC := gcc CCFLAG = -o -c $(OBJ):$(Target) $(CC) $(CCFLAG) $^ $@ %.o:%.c $(CC) $(CCFLAG) $^ $@s .PHONY: clean: rm -rf *.o Kindle echo "clean up"
5.0
PROG = Kindle SRC = $(wildcard *.c) OBJ = $(patsubst %.c,%.o,$(SRC)) CC := gcc CCFLAG = -g all:$(PROG) $(PROG):$(OBJ) $(CC) $(CCFLAG) $^ -o $@ .PHONY: clean: rm -rf *.o $(PROG)
6.0
#通配符 #包含头文件原则 #第二层 变量 #第三层 隐含规则 #第四层 自动变量 # $^:代表依赖文件 # $@ :目标文件 # $< : 代表第一个依赖文件 #第五层 使用函数 PROG = test SRC = $(wildcard *.c) OBJ = $(patsubst %.c,%.o,$(SRC)) CC := gcc CCFLAG = -g all:$(PROG) $(PROG):$(OBJ) $(CC) $(CCFLAG) $^ -o $@ .PHONY: clean: rm -rf *.o $(PROG)
靠技术实力称霸,千面鬼手大人万岁!