我们支持两种构建模式(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