Linux 下 make 与 Makefile 基础用法
1. 什么是 make, makefile,作用
make 是一个自动化构建工具,根据文件的时间戳判断哪些文件需要重新编译,从而减少重复编译的时间。
Makefile 是 make 读取的配置文件,定义了构建规则、依赖关系和执行命令。
2. 基本概念:目标,依赖,命令
一个 Makefile 主要由规则组成,每条规则的格式如下:
目标:依赖项 命令
- 目标(target):通常是要生成的文件名,也可以是伪目标(如
clean)。 - 依赖项(prerequisites):生成目标所依赖的文件或其他目标。
- 命令(recipe):由 Shell 执行的命令,必须以 Tab 键开头。
示例:
main: main.cc
g++ -o main main.cc
执行 make 时,若 main.cc 比 main 新,则执行 g++ 命令。
3. makefile 基本语法
- 注释:以
#开头。 - 多目标规则:一个规则可生成多个目标。
- 伪目标:不代表真实文件,常用于清理等操作,需声明为
.PHONY。
示例:
.PHONY: clean
clean:
rm -f main *.o
4. 变量:定义和使用,自动变量
- 定义变量:
变量名 = 值或变量名 := 值(立即展开)。 - 使用变量:
$(变量名)或${变量名}。 - 自动变量:
$@:目标$^:所有目标依赖$<:目标依赖列表中的第一个依赖$?:所有目标依赖中被修改过的文件
示例:
CC = gcc
CFLAGS = -Wall
main: main.cc
$(CC) $(CFLAGS) -o $@ $^
5. 常用函数 wildcard
- 通配符:
$(wildcard 模式),如$(wildcard *.c) - 模式替换:
$(patsubst 模式,替换,文本),如$(patsubst %.c,%.o,$(wildcard *.c))


