Makefile 的基本结构总结
Makefile 用于自动化管理项目的编译过程,其基本结构分为以下几个核心部分:
1. 变量定义
- 作用:简化和统一编译器、编译选项及文件名的管理。
- 示例:
CC = gcc CFLAGS = -Wall -g TARGET = ex1
2. 目标和规则
- 作用:定义生成文件或执行操作的具体步骤。
- 基本结构:目标文件 : 依赖文件
all: $(TARGET) $(TARGET): $(TARGET).o $(CC) $(CFLAGS) -o $(TARGET) $(TARGET).o $(TARGET).o: $(TARGET).c $(CC) $(CFLAGS) -c $(TARGET).c -o $(TARGET).o
3. 特殊目标
- 作用:执行特定操作(如清理生成的文件)。
- 示例:
clean: rm -f $(TARGET) $(TARGET).o
4. 伪目标
- 作用:声明不生成文件的目标,避免与文件名冲突。
- 示例:
.PHONY: all clean
# 定义编译选项
CFLAGS = -Wall -g
# 定义编译器
CC = gcc
# 定义目标文件名
TARGET = ex1
# 默认目标,依赖于 $(TARGET)
all: $(TARGET)
# 生成可执行文件的规则
$(TARGET): $(TARGET).o
$(CC) $(CFLAGS) -o $(TARGET) $(TARGET).o
# 编译源文件生成目标文件的规则
$(TARGET).o: $(TARGET).c
$(CC) $(CFLAGS) -c $(TARGET).c -o $(TARGET).o
# 清理生成文件的规则
clean:
rm -f $(TARGET) $(TARGET).o
# 声明伪目标,避免与实际文件名冲突
.PHONY: all clean