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)

 

posted @ 2017-12-17 22:57  千面鬼手大人  阅读(105)  评论(0编辑  收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css