试图找到一种优雅的方法来解决一些复杂的依赖关系。我的 Makefile 中有以下内容:
.PHONY: FOO
FOO: foo
foo:
build foo
.PHONY: BAR
BAR: bar
bar: FOO
build bar
这里的想法是我想用虚假目标(FOO BAR)抽象真实文件(foo,bar)。当然,在我真正的 Makefile 中,它更复杂,这就是抽象很重要的原因。但是,这里的问题是通过使虚假目标 FOO 成为 bar 的依赖项,然后 Make 总是尝试重建 bar,即使 foo 和 bar 都是最新的。这显然是因为它总是将 FOO 视为过时的。但这种行为并不真正正确。
所以看来我只有 3 个选项:1)让 bar 直接依赖于 foo。在我真正的 Makefile 中,它更加复杂,并且尝试将真实文件指定为依赖项是非常不可取的。2)除了所有的虚假之外,还使用变量。这使得整个 Makefile 更加复杂。3) 从 bar 中删除 foo/Foo 作为依赖项,并在 bar 中添加 FOO 的递归 make 作为规则的一部分。这是非常糟糕的形式。
是否有一些我不知道的更优雅的解决方案?
谢谢。