You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:27:05