递归gmake问题
我需要编写一个快速的 makefile 来构建我的所有项目。 这是 C++ 代码,我正在使用 gmake。
假设我有一个目录列表,我想 cd 到每个目录,发出 gmake 命令,如果成功,则转到下一个目录,依此类推。
我通过查看 gmake 手册< /a>
.PHONY: all clean dirs $(DIRS)
dirs: $(DIRS)
$(DIRS): \n\t
$(MAKE) -C $@
它适用于“all”目标 - 如果我只输入 gmake,它就会做正确的事情。 但如果我做 gmake clean 它什么也不做。
我正在学习 gmake,所以我肯定在这里做了一些愚蠢的事情:)
感谢您的帮助。
I need to write a quick makefile for building all my projects. This is C++ code and I am using gmake.
Say I have a list of directories, I want to cd to each, issue gmake command and if it succeeds, go to the next one and so on.
I cooked this by looking at the gmake manual
.PHONY: all clean dirs $(DIRS)
dirs: $(DIRS)
$(DIRS): \n\t
$(MAKE) -C $@
It works for the "all" target - if I just type gmake, it does the right thing. But if I do gmake clean it does nothing.
I am learning gmake as I go, so I am certainly doing something silly here :)
Thanks for any help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为了递归地制作第一个目标以外的东西(我猜所有都是你的第一个目标),你需要让子制作知道要构建什么。 您可以使用 MAKEFLAGS 和 MAKECMDGOALS 变量来执行此操作。
例如:
您的规则没有传递目标名称,例如 clean,因此子 make 没有工作要做(因为所有内容都已构建)。
In order to recursively make something other than the first target (I'm guessing all is your first target), you need to give the sub-make an idea of what to build. You can do so with the MAKEFLAGS and MAKECMDGOALS variables.
For example:
Your rule was not passing along the target names, e.g. clean, so the sub-make had no work to do (since all was already built).