Makefile和sub makefile,虚假任务无所事事

时间:2012-02-13 16:17:52

标签: makefile gnu-make

目录树

.
| Makefile
| src
    | Makefile
| spec
| test
<。>在./Makefile

default: all

.DEFAULT: 
    $(MAKE) -C $@

在src / Makefile

.PHONY: all spec test ...

spec:
    bundle exec cucumber ../spec

当我在src目录中时,“make spec”运行良好。

..././src/# make spec
blablabla

但是当我在根目录中时,我知道“没有什么可做的”,但这是一个虚假的目标

..././# make spec
make: Nothing to be done for `spec'.

我认为这是一个问题,任务名称与目录名称相同,带有子makefile。

1 个答案:

答案 0 :(得分:0)

  

我认为这是一个问题,任务名称与目录名称相同,带有子makefile。

是的。

尝试类似:

all :

forward_ : ;

% : forward_
    $(MAKE) -C $@

.PHONY : all forward_

即使存在具有forward_名称的现有文件或目录,也应该触发Phony %目标触发$@目标的重新评估。