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

为何make仅运行单个目标,而make default会执行所有依赖?

为什么make和make default的执行结果不一样?

这其实是Make工具的核心规则在起作用,我给你拆解得明明白白:

1. make不带参数时的行为

当你直接敲make命令而不指定目标时,Make会自动执行Makefile里第一个被定义的目标。如果你的Makefile里build目标写在最前面(比如在default目标之前),那make就只会执行build这一个目标,完全不会管后面的其他目标。

2. make default指定目标时的行为

当你明确写make default时,Make会严格按照你指定的default目标来执行,同时会递归执行这个目标的所有依赖项。你的default目标应该是类似这样定义的:

default: build run

这种情况下,Make会先处理build依赖(执行build目标的命令),等build完成后,再处理run依赖(执行run目标的命令),所以看起来就是连续执行了build和run两个阶段。

小验证技巧

如果你想确认当前Makefile的默认目标是什么,可以在终端里执行:

make -p | grep "^.DEFAULT_GOAL"

这个命令会输出Make当前识别的默认目标,你就能直观看到是不是build了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:59:41