Makefile

Posted on 2023-01-10 13:27  lyc2002  阅读(16)  评论(0编辑  收藏  举报

简单示例

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