首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GNUmake运行并行构建

使用GNUmake运行并行构建
EN

Stack Overflow用户
提问于 2020-07-07 14:18:56
回答 3查看 85关注 0票数 1

我们支持两种构建模式(32位和64位)。为此,我们有两个目标:

对于32位,我们有make32

对于64位我们有make64

每当用户尝试使用make32运行make命令时,它都会运行32bit build,与使用make64时运行64bit build的方式相同。我们有另一个名为makeboth的目标,它按顺序运行32位和64位构建。

代码语言:javascript
复制
makeboth:
         $(MAKE) make32 
         $(MAKE) make64

上面的make snippet在顶层GNUmakefile中,我们在它的子目录中运行了几个makefile。我想在用户通过目标makeboth.Is时并行运行32位和64位构建,可以这样做吗?有谁能帮帮忙。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-07 14:22:28

安排它,使makeboth将其他两个作为先决条件。

代码语言:javascript
复制
makeboth: make32 make64
    @echo makeboth done

然后,make -jN makeboth应该进行并行构建。

票数 0
EN

Stack Overflow用户

发布于 2020-07-07 14:34:06

您可以使用-j N选项并行运行目标:

代码语言:javascript
复制
makeboth: make32wrapper make64wrapper;
    @echo makeboth done

# We need wrappers here to prevent parallel execution deeper in the
# make32 and make64 targets
make32wrapper:
    @$(MAKE) -s make32
make64wrapper:
    @$(MAKE) -s make64

make32:
    echo make32 started
    sleep 3
    echo make32 done

make64:
    echo make64 started
    sleep 3
    echo make64 done

示例:

代码语言:javascript
复制
$ make -j 10 makeboth
make32 started
make64 started
make64 done
make32 done
makeboth done
票数 0
EN

Stack Overflow用户

发布于 2020-07-07 15:06:53

GNUmake允许您使用make的-j参数同时运行两个命令:

您可以通过命令行执行此命令:

其中N是要派生的进程编号

代码语言:javascript
复制
make -j <N> make32 make64

此命令将同时运行这两个命令/目标。您甚至可以通过创建一个处理此问题的新make目标来做得更好。回到Makefile:

N部分提供编号!

代码语言:javascript
复制
makeboth:
    make -j <N> make32 make64
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62769191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档