C语言 使用 GNUmake 运行并行构建



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

对于 32 位,我们有make32

对于 64 位,我们有make64

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

makeboth:
$(MAKE) make32 
$(MAKE) make64

上面的 make 片段位于顶级 GNUmakefile 中,我们在其子目录中运行多个 makefile。我想在用户传递目标makeboth时并行运行 32 位和 64 位构建。可以做到吗?任何人都可以在这里帮忙。

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

makeboth: make32 make64
@echo makeboth done

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

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

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

例:

$ make -j 10 makeboth
make32 started
make64 started
make64 done
make32 done
makeboth done

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

您可以通过命令行 Dod 此 manulay:

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

make -j <N> make32 make64

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

N部分的供应编号!

makeboth:
make -j <N> make32 make64

最新更新