makefile通用版

大耗子 2020年02月24日 295次浏览

文章链接:https://codemouse.online/archives/354864644651

理解层次

#通配符
#包含头文件原则
#第二层 变量
#第三层 隐含规则
#第四层 自动变量
#$^:代表依赖文件
#$@ :目标文件
#$< : 代表第一个依赖文件
#第五层 使用函数

注意

Makefile中的命令,必须要以[Tab]键开始

编译一个目标

LIB=-lpthread
PROG = test
SRC  = $(wildcard *.c)
OBJ  = $(patsubst %.c,%.o,$(SRC))
CC    := gcc
CCFLAG = -g  
all:$(PROG)
$(PROG):$(OBJ)
	$(CC) $(CCFLAG) $^ -o $@ $(LIB)
.PHONY:
clean:
	-rm -rf *.o $(PROG)

编译多个目标版本

LIB=-lpthread
SRC=$(wildcard *.c)
OBJ=$(patsubst %.c,%.o,$(SRC))
PROG=$(SRC:%.c=%)
CC:=gcc
CCFLAG=-g
all:$(PROG)
$(PROG):%:%.c
	$(CC) $(CCFLAG) $< -o $@ $(LIB)
.PHONY:
clean:
	-rm -rf *.o $(PROG)