2011-04-14 37 views
0

我正在用递归Makefile建立一个项目。基本格式很简单:源文件在各个子目录中,Makefile在项目根目录中。从项目根目录调用make将调用子目录中的所有makefile。到现在为止还挺好。使用递归生成文件时,如何将对象文件文件夹传递给调用make?

所以现在我已经有了目标文件。我怎样才能让主makefile看到哪些目标文件存在于子目录中,最好将它们传递给链接器?

回答

1

这实际上不是一个好方法(请参阅recursive make considered harmful),因为递归makefile会多次启动Make程序的开销。实际上,通过包含一个Makefile而不是从另一个Makefile中调用它,可以更快地完成相同的任务。如果从子目录中包含make文件,那么也将解决全局make文件的问题,即查看它需要的所有文件以将它们链接到一起。您可以有一个代表所有对象文件的单个变量,并且每个包含的文件都可以附加到该文件中。

另外,请允许我建议使用CMake。它使配置你的构建机制变得简单得多,而且不易出错,但是仍然允许你使用Make进行构建(它会为你生成Makefiles)。

+0

每种方法都有其优点和缺点。多次启动'make'的开销可以忽略不计,并且不是您链接到的文章中针对递归make的主要参数。 – Idelic 2011-04-15 06:25:39

相关问题