递归 Makefile - 将变量传递到根 Makefile
目前,由于一些意外的递归和必要的文件名集合,我在生成文件方面遇到了问题。我想在项目的根文件夹中递归调用 Makefile,并且应该遍历每个可能的子文件夹(及其子文件夹...),目标是收集所有文件并将它们写入一个变量以用作“目标” " 或依赖文件。
例如:/Makefile
遍历/Source
、/Source/Boot
并找到/Source/Boot/Boot.s (-> 因此,一个目标是
/Source/Boot/Boot.o
),它继续使用 /Source/Kernel
并找到 /Source/内核/Foo.c
(-> 因此,第二个目标是 /Source/Kernel/Foo.o
)。我可以在子文件夹的 Makefile 中编译这些文件,但是当我的根 Makefile 返回到根目录时,我需要链接它们。
所以问题是,我如何才能将这些目标文件的路径充分传递到根 makefile 来链接它们?
Currently i am having problems with a makefile due to some unexpected recursion and the neccessary collection of filenames. I want to call recursively a Makefile in the root folder of my project and that one should go through every possible subfolder (and their subfolders...) with the goal to collect all files and write them to a variable to be used as "targets" or dependent files.
For example: /Makefile
goes through /Source
, /Source/Boot
and finds /Source/Boot/Boot.s
(-> one target is therefore /Source/Boot/Boot.o
) and it goes on with /Source/Kernel
and finds /Source/Kernel/Foo.c
(-> second target is therefore /Source/Kernel/Foo.o
). I can compile these files in the Makefiles in the subfolders, but i need to link them when my root Makefile returns to the root.
So the question is, how can i pass adequately the paths to these object files to the root makefile to link them?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
递归调用的 makefile 无法将信息传递回其调用者(除非您采取黑客手段,例如使用外部文件来收集对象文件名)。
看看马克链接到的论文。它展示了一种以可维护的方式组织项目来完成您想要的事情的方法。
Recursively called makefiles can't pass info back to their caller (unless you resort to a hack, like using external files to collect the object file names).
Have a look at the paper Mark linked to. It shows a way of organising your project to do what you want, in a maintainable way.