2023-07-21 11:16:42 +08:00
|
|
|
# 定义变量,用于存放目标文件和依赖文件的目录
|
|
|
|
OBJ_DIR := ./objs
|
|
|
|
|
|
|
|
# $@ 表示目标文件,
|
|
|
|
# $^ 表示依赖文件列表去重之后的所有依赖文件,
|
|
|
|
# $< 表示第一个依赖文件,
|
|
|
|
# $* 表示匹配目标文件名的部分,
|
|
|
|
# $% 表示静态模式中的百分号匹配
|
|
|
|
|
|
|
|
# CC 是编译器
|
|
|
|
# CC = gcc
|
|
|
|
# TARGET 是目标文件
|
2023-07-22 10:38:05 +08:00
|
|
|
TARGET = $(OBJ_DIR)/main
|
2023-07-21 11:16:42 +08:00
|
|
|
# OBJ 是目标文件依赖的文件
|
|
|
|
# OBJ = link.o main.o
|
|
|
|
OBJ = $(OBJ_DIR)/link.o $(OBJ_DIR)/main.o
|
|
|
|
|
|
|
|
# 所有的 .o 文件都依赖于 .c 文件
|
|
|
|
$(OBJ_DIR)/%.o: %.c
|
2023-07-22 10:38:05 +08:00
|
|
|
@$(CC) -c $< -o $@
|
2023-07-21 11:16:42 +08:00
|
|
|
|
|
|
|
# 意思是: 目标文件依赖于 OBJ, 执行命令是 $(CC) $(OBJ) -o $(TARGET)
|
|
|
|
$(TARGET): $(OBJ)
|
2023-07-22 10:38:05 +08:00
|
|
|
@$(CC) $(OBJ) -o $(TARGET)
|
2023-07-21 11:16:42 +08:00
|
|
|
|
|
|
|
# # link.o 依赖于 link.c, 执行命令是 $(CC) -c link.c -o link.o
|
|
|
|
# # 用于生成目标文件 link.o
|
|
|
|
# link.o: link.c
|
|
|
|
# $(CC) -c link.c -o $(OBJ_DIR)/link.o
|
|
|
|
|
|
|
|
# # 用于生成目标文件 main.o
|
|
|
|
# main.o: main.c
|
|
|
|
# $(CC) -c main.c -o $(OBJ_DIR)/main.o
|
|
|
|
|
|
|
|
# 用于清理目标文件和可执行文件
|
|
|
|
clean:
|
|
|
|
rm -rf $(OBJ) $(TARGET)
|