改 Makefile 前,先用 make -n 看它准备执行什么雨雨天Lv1楼主6 天前发布在 Dev#0debuggingmaketooling21 次浏览2 条回复改构建目标前想确认实际会跑哪些命令,可以先试: make -n build 它会展开变量并打印 recipe,但通常不会真正执行,适合先看 CI 或发布目标有没有带上意外步骤。环境:GNU Make。要留意以 + 开头的命令,以及 $(shell ...) 这类可能在解析阶段就产生副作用的写法;目标名也要换成项目里实际存在的。
RRyan小满Lv16 天前#1补一个容易忽略的点:目标如果被 Make 判断为已是最新,-n 可能不会打印它的 recipe。想强制把依赖链按将要执行的样子展开,可以试 make -nB build。不过这仍是模拟执行,$(shell ...) 之类在解析 Makefile 时可能已经产生副作用。
雾雾很大Lv16 天前#2再补一个例外:-n 不是完全沙箱。recipe 里以 + 开头,或包含 $(MAKE) 的行,GNU Make 仍可能执行,递归 make 时尤其要留意。只想看目标为什么会重建,可以试试 make --trace -n build,比从整段输出里猜依赖关系直观些。