简单示例
src = $(wildcard ./*.c)
objs = $(patsubst %.c, %.o, $(src))
target = app
$(target):$(objs)
$(CC) $^ -o $@
%.o:%.c
$(CC) -c $< -o $@
.PHONY:clean
clean:
rm -f $(objs) $(target)
预定义变量
AR : 归档维护程序的名称,默认值为 ar
CC : C 编译器的名称,默认值为 cc
CXX : C++ 编译器的名称,默认值为 g++
$@ : 目标的完整名称
$< : 第一个依赖文件的名称
$^ : 所有的依赖文件
函数
wildcard
示例:$(wildcard ./*.c)
获取指定目录下指定类型的文件列表,返回的结果是 add.c sub.c mult.c div.c main.c
patsubstr
示例:$(patsubst %.c, %.o, x.c bar.c)
将 x.c bar.c 中符合模式 %.c 的单词替换为 %.o,返回结果是 x.o bar.o