如何为C项目编写包含compile/run/clean命令的简单Makefile?
最简可直接使用的Makefile
你直接在project根目录新建名为Makefile的文件,粘贴下面的内容即可:
# 基础配置变量,后续改参数只需要修改这里 CC = gcc INC_DIR = inc SRC_DIR = src BIN_DIR = bin TARGET = $(BIN_DIR)/main.exe # 编译参数:-I指定头文件搜索路径,-Wall开启常用警告方便排查问题 CFLAGS = -I$(INC_DIR) -Wall # compile命令:编译生成可执行文件 compile: $(TARGET) $(TARGET): $(SRC_DIR)/main.c # 先判断bin目录是否存在,不存在就新建,避免编译报错 @if not exist $(BIN_DIR) mkdir $(BIN_DIR) $(CC) $(CFLAGS) $^ -o $@ # run命令:先校验代码是否需要重新编译,再运行可执行文件 run: compile $(TARGET) # clean命令:删除bin目录下所有生成的文件 clean: rm -rf $(BIN_DIR)/* # 声明三个伪目标,避免和目录下同名文件冲突导致命令失效 .PHONY: compile run clean
补充说明
- 如果你使用Linux/macOS系统,把代码中
@if not exist $(BIN_DIR) mkdir $(BIN_DIR)这一行替换为@mkdir -p $(BIN_DIR)即可正常使用 - 三个命令的功能完全匹配你的需求:
- 执行
make compile:仅编译代码生成bin/main.exe,不会运行程序 - 执行
make run:自动检测代码是否有修改,有修改会先重新编译,再运行生成的程序 - 执行
make clean:清空bin目录下的所有编译产物,回到未编译的初始状态
- 执行
- 后续新增源文件时,只需要把新的.c文件路径加到
$(SRC_DIR)/main.c后面即可,比如新增了src/utils.c就改为$(SRC_DIR)/main.c $(SRC_DIR)/utils.c
内容的提问来源于stack exchange,提问作者user15307601
相关产品推荐
相关产品推荐

