技术解析

请教一下,支持并发编译的 Makefile 的写法
0
2021-06-22 06:52:57
idczone

在一个项目中,有几个模块需要编译,比如是 project1, project2, project3,project4,project5。

需要编译他们的先后顺序也是 1,2,3,4,5。 现在的问题是,直接执行 make 是没有问题的,可以正常执行。

如果想用并发执行 make -j4 该怎么修改这个 Makefile 呢?如果不修改直接使用 make -j4 来编译的话,就无法保证是按照编译顺序来编译的了,最终导致编译失败。


让 project2 依赖 project1, project3 依赖 project2...

额 Makefile 本身就是解决你这个问题的…… 我觉得你要看一下 makefile 的文档了。

这个问题就好像在问,请问怎么用 git 才能支持版本控制啊……

Cmake

是的,我这样做了,让它们依次依赖,但是与不加入依赖关系对比, 编译时间没有什么减少。而且由于是 2 依赖 1,3 依赖 2,所以,在使用,比如-j4 编译的时候看起来仍然是单独编译的。我就迷茫了。
你说的对,我是需要好好看看文档了,可能是我忽略了什么。
cmake 可以解决这个问题吗?

所以每个 project 里面是不是多 job 工作的呢
可以编译时 top 看一下有几个编译器进程

好的,我顺着你的思路去跟踪一下。

如果你的五個 project 本來就必須嚴格 12345 這樣,本來就沒辦法並行啊大哥?
make -j4 改善的是「 3 依賴於 1 和 2,那麼 1 和 2 可以並行」的情況。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服