有人可以阐明这里的区别:
$(tsdir)/proj有先决条件$(tsdir)/proja和$(tsdir)/projb. 我希望每次必须构建时都调用proja's 和's makefile 。如果或已经过时并且被更新了,那么它们的makefile将分别触及和。如果这些文件比 更新,则重建 proj。projbprojprojaprojb$(tsdir)/proja$(tsdir)/projb$(tsdir)/proj
我通过使用下面的代码和FORCE目标来完成这项工作。如果我尝试切换到使用.PHONY目标,这将不起作用。我更喜欢.PHONY这样做,因为这被认为是更“正确”的方式。但它不起作用,我不知道为什么。proja's 和projb's makefiles 不会被.PHONY目标调用,而是proj被重建。
我正在使用 GNU make 3.81。
谢谢纳楚姆
$(tsdir)/proj: $(tsdir)/proja $(tsdir)/projb
...
$(tsdir)/%: FORCE
make -C $(prereqdir)/$*
FORCE:
#or
$(tsdir)/proj: $(tsdir)/proja $(tsdir)/projb
...
.PHONY: $(addprefix $(tsdir)/, $(projects))
$(tsdir)/%:
make -C $(prereqdir)/$*