Makefile如何让依赖bar的目标感知baz变更?无需修改bar.d
解决方案
问题的核心是:你的bar.d仅声明了bar依赖baz,但主Makefile缺少生成bar的规则。当baz变更时,Make能识别到bar需要更新,但因为没有定义如何生成bar,所以不会实际更新bar的时间戳——而foo和qux只依赖bar的时间戳,因此不会触发重建。
无需修改bar.d的解决方法如下:
在主Makefile中添加bar的生成规则,确保baz变更时bar会被更新(根据bar的实际类型选择对应方式):
情况1:bar是由baz生成的文件(如编译、复制产物)
直接写入实际生成bar的命令:
bar: baz # 替换为你实际生成bar的命令,例如编译或复制 cp baz bar
情况2:bar是手动维护的文件,仅需通过baz变更触发foo/qux重建
只需更新bar的时间戳即可:
bar: baz touch bar
添加上述规则后,当baz变更时,Make会执行bar的规则更新bar,进而自动触发foo和qux的重建,完全不需要修改bar.d的内容。
内容的提问来源于stack exchange,提问作者Markus Roe
相关产品推荐
相关产品推荐

