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

Makefile的-B标志是否会传递给$(MAKE)调用的子Makefile

结论

执行$(MAKE) -C path/to/Makefile all调用子Makefile时,命令行传入的-B标志会被自动传递给对应的子Makefile。

细节说明
  • GNU Make针对递归构建场景做了专门设计:只要你在规则中使用内置变量$(MAKE)(而非硬编码写死make命令)调用子构建流程,Make会自动通过内部的MAKEFLAGS环境变量,把外层命令行传入的、支持递归传递的运行参数透传给子make进程,-B(等价长参数--always-make,作用是强制所有目标无条件跳过时间戳检查直接重建)属于默认透传的标志范畴,不需要手动在子调用命令后追加该参数。
  • 可以通过简单方式验证:在被调用的子Makefile开头添加一行打印语句$(info 子Makefile接收到的MAKEFLAGS值: $(MAKEFLAGS)),执行外层make -B my_target命令时,就能看到输出的标志内容中包含B标识,子Makefile也会完全按照-B的规则执行强制重建逻辑。
  • 要注意透传机制的触发前提:如果把规则里的$(MAKE)替换成硬编码的make命令,自动透传逻辑就会失效,外层传入的-B等参数不会自动传给子进程,这也是官方文档明确要求递归构建必须使用$(MAKE)变量的核心原因之一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:45:39