Makefile
是一个构建自动化工具,主要用于编译和链接程序。它通过定义一系列规则来描述如何从源文件生成目标文件。每个规则通常包含一个目标(target)、依赖文件(prerequisites)和一个命令(command)。
以下是一个简单的Makefile
示例,用于编译一个C语言项目:
# 定义编译器
CC = gcc
# 定义源文件目录和目标文件目录
SRC_DIR = src
OBJ_DIR = obj
BIN_DIR = bin
# 定义源文件和目标文件
SRC_FILES = $(wildcard $(SRC_DIR)/*.c)
OBJ_FILES = $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SRC_FILES))
# 定义最终可执行文件名
TARGET = $(BIN_DIR)/myprogram
# 默认目标
all: $(TARGET)
# 链接目标文件生成可执行文件
$(TARGET): $(OBJ_FILES)
mkdir -p $(BIN_DIR)
$(CC) -o $@ $^
# 编译源文件生成目标文件
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
mkdir -p $(OBJ_DIR)
$(CC) -c -o $@ $<
# 创建目标文件目录
$(OBJ_DIR):
mkdir -p $(OBJ_DIR)
# 清理生成的文件
clean:
rm -rf $(OBJ_DIR) $(BIN_DIR)
.PHONY: all clean
SRC_DIR
和SRC_FILES
的定义是否正确。gcc -MM
命令生成依赖文件,并将其包含在Makefile
中。通过以上内容,你应该能够理解并编写简单的Makefile
,并在遇到常见问题时进行排查和解决。
领取专属 10元无门槛券
手把手带您无忧上云