Makefile 和子 makefile,虚假任务无需执行任何操作
目录树
.
| 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'.
,我认为这是任务名称的问题,该任务名称与目录名称相同,带有子目录生成文件。
Directory tree
.
| Makefile
| src
| Makefile
| spec
| test
in ./Makefile
default: all
.DEFAULT:
$(MAKE) -C $@
in src/Makefile
.PHONY: all spec test ...
spec:
bundle exec cucumber ../spec
When I am in the src directory the "make spec" works well.
..././src/# make spec
blablabla
But when I am in the root directory i get that there is "nothing to be done" but it is a phony target
..././# make spec
make: Nothing to be done for `spec'.
I suppose it is a problem with the name of task that is the same as the name of the directory, with a sub makefile.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的。
尝试如下操作:
即使存在带有
$@
的现有文件或目录,Phonyforward_
目标也应该触发%
目标的重新评估姓名。Yep.
Try something like:
Phony
forward_
target is supposed to trigger re-evaluation of%
target even when there is an existing file or directory with$@
name.