请教一下,支持并发编译的 Makefile 的写法

2018-09-10 22:12:04 +08:00
 z0z

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

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

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

3815 次点击
所在节点    Linux
7 条回复
billlee
2018-09-10 22:31:05 +08:00
让 project2 依赖 project1, project3 依赖 project2...
scriptB0y
2018-09-10 22:31:54 +08:00
额 Makefile 本身就是解决你这个问题的…… 我觉得你要看一下 makefile 的文档了。


这个问题就好像在问,请问怎么用 git 才能支持版本控制啊……
zwh2698
2018-09-10 22:51:15 +08:00
Cmake
z0z
2018-09-11 08:18:05 +08:00
@billlee 是的,我这样做了,让它们依次依赖,但是与不加入依赖关系对比, 编译时间没有什么减少。而且由于是 2 依赖 1,3 依赖 2,所以,在使用,比如-j4 编译的时候看起来仍然是单独编译的。我就迷茫了。
@scriptB0y 你说的对,我是需要好好看看文档了,可能是我忽略了什么。
@zwh2698 cmake 可以解决这个问题吗?
iwtbauh
2018-09-11 10:39:45 +08:00
所以每个 project 里面是不是多 job 工作的呢
可以编译时 top 看一下有几个编译器进程
z0z
2018-09-11 11:28:03 +08:00
@iwtbauh 好的,我顺着你的思路去跟踪一下。
franklinyu
2018-10-03 10:18:12 +08:00
如果你的五個 project 本來就必須嚴格 12345 這樣,本來就沒辦法並行啊大哥?

make -j4 改善的是「 3 依賴於 1 和 2,那麼 1 和 2 可以並行」的情況。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488012

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX