在 GNU make 中,是否有任何方法可以检测或强制表示(假)目标没有导致任何重建操作,即使它的配方已被触发?
我想要的是一个递归的拨打电话,比如:
target: subtarget
# recipe
.PHONY: subtarget
subtarget:
$(MAKE) -C subdir something
当然,递归make
调用很可能发现没有什么可做的something
。但是到那时,由于配方subtarget
已经启动,配方target
也将始终执行。有没有办法避免这种情况?
(我已经看到 GNU 手册建议不要使用虚假目标作为先决条件,但这本身似乎对它们的用处造成了很大的限制。)
在我看来,这应该是一个常见问题,但我没有找到任何参考资料。任何帮助深表感谢。
补充:在我想使用它的上下文中,我不一定知道something
确切构建的是什么:它也可能是一个虚假目标,最终会创建一堆*.xyz
我在这个级别不知道或想知道的文件(关注点分离等等)。否则很容易将subdir/something
其作为先决条件添加到subtarget
.