有人可以阐明这里的区别:
$(tsdir)/proj
有先决条件$(tsdir)/proja
和$(tsdir)/projb
. 我希望每次必须构建时都调用proja
's 和's makefile 。如果或已经过时并且被更新了,那么它们的makefile将分别触及和。如果这些文件比 更新,则重建 proj。projb
proj
proja
projb
$(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)/$*