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

Windows下make重复编译未更新文件的问题求助

问题解决步骤

1. 解决make hello找不到cc的问题

Windows系统默认没有cc编译器命令,而make的内置编译规则会默认调用cc,所以直接执行make hello会触发找不到文件的错误。你可以用两种方式固定编译器:

  • 全局环境变量设置:把CC=gcc添加到系统环境变量中,之后直接执行make hello就会自动用gcc编译
  • 写入Makefile:在项目的Makefile里明确指定编译器,这是更推荐的项目级配置方式

2. 解决每次执行都重新编译的问题

你之前写的Makefile缺少明确的目标依赖关系,加上用命令行传CC=gcc时,make会判定每次编译的环境参数有变化,因此强制重新编译。正确的Makefile写法如下:

# 指定编译器为gcc
CC = gcc

# 定义目标hello,依赖文件为hello.c
hello: hello.c

如果需要更明确的编译命令(可选,make内置规则已能自动处理编译逻辑),可以写成:

CC = gcc

hello: hello.c
	$(CC) $(CFLAGS) $^ -o $@

# 可选:添加清理生成文件的目标
clean:
	del hello.exe

这样配置后,make会对比hello.exe和hello.c的修改时间,只有当hello.c更新时才会重新编译。

另外注意:不要把hello标记为.PHONY目标——PHONY标记的目标会被强制判定为「始终需要更新」,直接导致每次执行都重新编译。如果要保留.PHONY,可以补充all目标指向hello,完整写法如下:

.PHONY: all clean
CC = gcc

all: hello

hello: hello.c

clean:
	del hello.exe

此时执行make或make all都会编译hello,且仅在文件更新时触发重新编译。

内容的提问来源于stack exchange,提问作者Maksym Andreiev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 15:06:17