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

Makefile中all目标的依赖顺序是否会影响执行顺序?

Makefile中all目标的依赖顺序是否重要?

默认情况下,Make会按从左到右的顺序启动依赖目标的构建,但这并不保证target2一定在target3之后执行完毕。

具体来说:

  • 当不启用并行构建(默认无-j参数)时,如果各个依赖目标之间没有互相依赖,Make会严格按照all中书写的顺序依次执行每个目标的构建规则。比如你给出的示例:
    all : target1 target2 target3
    
    target1:
    	@echo "Building target1"
    target2:
    	@echo "Building target2"
    target3:
    	@echo "Building target3"
    
    执行make会得到固定顺序的输出:
    Building target1
    Building target2
    Building target3
    
  • 但如果启用了并行构建(比如用-j2参数),Make会同时启动多个构建任务,此时依赖的书写顺序就无法保证执行顺序了,输出顺序可能变成target1→target3→target2或者其他组合。

如果需要确保target2一定在target3之前完成构建,不能仅依赖all的依赖顺序,必须显式声明两者的依赖关系:

target3: target2

这样不管是否开启并行,Make都会保证先完成target2的构建,再开始target3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:50:28