三要素
目标:依赖
命令
自动变量
$< 当前规则中的第一个依赖
$@ 当前规则中的目标
$^ 规则中的所有依赖
函数
获取指定目录下的所有.c文件
src=$(wildcard ./*.c)
.c替换为.o
obj=$(patsubst ./%.o, ./%.c, $(src))
version_1:
app:main.c add.c sub.c mul.c
gcc main.c add.c sub.c mul.c -o app
version_2:
app:main.o add.o sub.o mul.o
gcc main.o add.o sub.o mul.o -o app
main.o:main.c
gcc -c main.c
add.o:add.c
gcc -c add.c
sub.o:sub.c
gcc -c sub.c
mul.o:mul.c
gcc -c mul.c
verson_3:
obj=main.o add.o sub.o mul.o
target=app
CC = gcc
CPPFLAGS = -I
$(target) : $(obj)
$(CC) $(obj) -o $(target)
%.o:%.c
$(CC) -c $< -o $@
version_4:
target=app
CC = gcc
CPPFLAGS = -I
src=$(wildcard ./*.c)
obj=$(patsubst ./%.o, ./%.c, $(src))
$(target) : $(obj)
$(CC) $(obj) -o $(target)
%.o:%.c
$(CC) -c $< -o $@
.PHONY:clean
clean:
rm $(obj) $(target) -f