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

如何在Makefile执行中途刷新以读取更新后的Makefile内容?

让Make在执行过程中自动刷新Makefile的方法

Make在启动时会一次性读取并解析整个Makefile的内容,构建好依赖树后才开始执行目标,所以在一次make运行中修改Makefile,当前进程不会自动重新读取更新后的内容。要实现你需要的效果,最直接的方式是递归调用make,在修改完Makefile后启动一个新的make进程来处理后续目标。

修改你的示例Makefile如下:

.PHONY: target1 target2

target1:
        @sed -i 's/Brian/World/' Makefile
        @$(MAKE) target2  # 启动新的make进程,读取更新后的Makefile执行target2

target2:
        @echo "Hello Brian!"

运行make target1时,会先执行sed修改Makefile,然后调用新的make进程执行target2,此时新进程会读取更新后的Makefile,最终输出Hello World!。

如果不想在target1里直接指定target2,也可以让递归make处理当前的目标集,比如用@$(MAKE) $(MAKECMDGOALS),这样不管你指定哪个目标,修改Makefile后都会重新执行当前请求的目标。

另外,如果你的场景允许,也可以把需要动态修改的部分拆分到单独的配置文件(比如config.mk),然后在主Makefile中用include config.mk引入。这样修改config.mk时,make会自动检测到依赖文件的更新,重新解析相关规则,不需要手动递归调用make。不过这种方法需要对现有复杂的Makefile做一定拆分,适合长期维护的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:10:13