代码之家  ›  专栏  ›  技术社区  ›  SY Lee

如何并行运行所有Makefile?

  •  -1
  • SY Lee  · 技术社区  · 2 年前

    我正在尝试在子目录下运行所有Makefile。

    但问题是,我不能并行运行所有Makefile。

    如何同时并行运行Makefiles?

    我看到的代码片段如下

    SUBDIRS := $(wildcard */.)
    
    all: $(SUBDIRS)
    $(SUBDIRS):
            $(MAKE) -C $@
    
    .PHONY: all $(SUBDIRS)
    

    all:
        cd library  && $(MAKE) all && cd ..
        cd programs && $(MAKE) all && cd ..
        cd tests    && $(MAKE) all && cd ..
    

    但它们不可能全部并行运行。

    1 回复  |  直到 2 年前
        1
  •  -1
  •   redwards    2 年前

    建议使用-j选项来并行化make run。

    $ make -j
    or 
    $ make -j <jobs/threads>
    

    -j选项采用了一个可选的作业/线程数参数,该参数通常应跟踪逻辑cpu(nproc)的数量。默认值是无限制的。