V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
z0z
V2EX  ›  Linux

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

  •  
  •   z0z · 2018-09-10 22:12:04 +08:00 · 3780 次点击
    这是一个创建于 2025 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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


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

    make -j4 改善的是「 3 依賴於 1 和 2,那麼 1 和 2 可以並行」的情況。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4841 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 09:55 · PVG 17:55 · LAX 02:55 · JFK 05:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.