Update Makefile
This commit is contained in:
parent
d8bb428f96
commit
4fdf297d56
64
Makefile
64
Makefile
@ -1,33 +1,51 @@
|
||||
# 编译器和编译选项
|
||||
# 定义编译器
|
||||
CC = gcc
|
||||
CFLAGS = -O2 -w
|
||||
|
||||
# 自动扫描当前目录下的所有 .c 和 .h 文件
|
||||
SRCS = $(wildcard *.c)
|
||||
HEADERS = $(wildcard *.h)
|
||||
OBJS = $(patsubst %.c, build/%.o, $(SRCS))
|
||||
# 定义源文件目录
|
||||
SRC_DIR = .
|
||||
|
||||
# 目标文件
|
||||
TARGET = build/main
|
||||
# 定义头文件目录
|
||||
INC_DIR = .
|
||||
|
||||
# 默认目标
|
||||
all: build $(TARGET)
|
||||
# 定义目标文件目录
|
||||
OBJ_DIR = obj
|
||||
|
||||
# 创建 build 文件夹
|
||||
build:
|
||||
if not exist build mkdir build
|
||||
# 定义可执行文件名称
|
||||
TARGET = main
|
||||
|
||||
# 链接目标
|
||||
$(TARGET): $(OBJS)
|
||||
$(CC) $(CFLAGS) -o $@ $^
|
||||
# 定义源文件后缀
|
||||
SRC_EXT = .c
|
||||
|
||||
# 编译规则
|
||||
build/%.o: %.c $(HEADERS)
|
||||
# 定义目标文件后缀
|
||||
OBJ_EXT = .o
|
||||
|
||||
# 定义源文件列表
|
||||
SRC_FILES = \
|
||||
array_queue.c \
|
||||
array_stack.c \
|
||||
linked_list_stack.c \
|
||||
linked_list.c \
|
||||
sq_list.c \
|
||||
main.c
|
||||
|
||||
# 使用正则表达式替换源文件后缀为.o,生成目标文件列表
|
||||
OBJ_FILES = $(patsubst $(SRC_DIR)/%$(SRC_EXT), $(OBJ_DIR)/%$(OBJ_EXT), $(SRC_FILES))
|
||||
|
||||
# 定义编译选项
|
||||
CFLAGS = -I$(INC_DIR) -Wall -Wextra -pedantic
|
||||
|
||||
# 默认目标,调用链接规则
|
||||
all: $(TARGET)
|
||||
|
||||
# 链接规则,将所有目标文件链接成可执行文件
|
||||
$(TARGET): $(OBJ_FILES)
|
||||
$(CC) $(CFLAGS) $^ -o $@
|
||||
|
||||
# 编译规则,将源文件编译成目标文件
|
||||
$(OBJ_DIR)/%$(OBJ_EXT): $(SRC_DIR)/%$(SRC_EXT)
|
||||
@mkdir -p $(OBJ_DIR)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
# 清理目标
|
||||
# 清理目标文件和可执行文件
|
||||
clean:
|
||||
if exist build rmdir /S /Q build
|
||||
|
||||
# 伪目标
|
||||
.PHONY: all clean build
|
||||
rm -rf $(OBJ_DIR) $(TARGET)
|
Loading…
x
Reference in New Issue
Block a user