【发布时间】:2011-04-14 02:19:59
【问题描述】:
我正在使用递归 Makefile 构建一个项目。基本格式很简单:各个子目录下的源文件,项目根目录下的Makefile。从项目根目录调用 make 将调用子目录中的所有 makefile。到现在为止还挺好。
所以现在我有了目标文件。如何让主生成文件查看子目录中存在哪些目标文件,更好地将它们传递给链接器?
【问题讨论】:
标签: makefile
我正在使用递归 Makefile 构建一个项目。基本格式很简单:各个子目录下的源文件,项目根目录下的Makefile。从项目根目录调用 make 将调用子目录中的所有 makefile。到现在为止还挺好。
所以现在我有了目标文件。如何让主生成文件查看子目录中存在哪些目标文件,更好地将它们传递给链接器?
【问题讨论】:
标签: makefile
这实际上不是一个好方法(请参阅recursive make considered harmful),因为递归 makefile 会增加多次启动 Make 程序的开销。您实际上可以更快地完成同样的事情,方法是包含另一个 Makefile 而不是从另一个 Makefile 调用它。如果您包含子目录中的 make 文件,这也将解决您的全局 make 文件查看它需要的所有文件以便将它们链接在一起的问题。您可以有一个代表所有目标文件的变量,并且您包含的每个 make 文件都可以附加到这个变量。
另外,请允许我建议使用CMake。它使您的构建机制的配置变得更加简单且不易出错,但仍然允许您使用 Make 构建(它会为您生成 Makefile)。
【讨论】:
make 的开销可以忽略不计,并且不是您链接到的论文中反对递归 make 的主要论据。