Multithreading 多线程以执行多个makefile

Multithreading 多线程以执行多个makefile,multithreading,makefile,Multithreading,Makefile,问题是构建我们的应用程序需要很多时间(20-30分钟) 大约有5000多个文件,代码分为多个子系统,可以独立构建。每个子系统都有自己的makefile 我的问题是:是否可以为每个makefile创建一个线程,以便并行构建所有子系统,然后运行一个makefile来合并它们 如果可能的话,如何进行呢?您可以使用make的并行功能。使用-j numbermake将同时运行number配方 有关更多说明,请参见。使用make-j(正如TheMorph所说)无疑是一条可行之路 但是,如果单个make进程可

问题是构建我们的应用程序需要很多时间(20-30分钟)

大约有5000多个文件,代码分为多个子系统,可以独立构建。每个子系统都有自己的makefile

我的问题是:是否可以为每个makefile创建一个线程,以便并行构建所有子系统,然后运行一个makefile来合并它们


如果可能的话,如何进行呢?

您可以使用make的并行功能。使用
-j number
make将同时运行
number
配方


有关更多说明,请参见。

使用
make-j
(正如TheMorph所说)无疑是一条可行之路

但是,如果单个make进程可以看到构建依赖项并确定并行化的内容,那么这种方法最有效。不过,听起来您有一个递归的Makefile系统,它是(警告:该链接是PDF)

通常很难并行运行递归make,因为顶级make并不真正理解不同子系统之间的依赖关系

因此,您最好先修复递归生成文件,然后充分利用
-j

是一个编写非递归make系统的示例。请注意,在当前拥有makefile的每个目录中仍然有一个makefile,每个makefile仍然管理相同的目标,并且每个子目录仍然可以独立构建。不同之处在于顶级构建将所有子目录makefile包含在一个依赖关系图中,这使得它能够更积极地并行化