我们支持两种构建模式(32位和64位)。为此,我们有两个目标:
对于32位,我们有make32
对于64位我们有make64
每当用户尝试使用make32运行make命令时,它都会运行32bit build,与使用make64时运行64bit build的方式相同。我们有另一个名为makeboth的目标,它按顺序运行32位和64位构建。
makeboth:
$(MAKE) make32
$(MAKE) make64上面的make snippet在顶层GNUmakefile中,我们在它的子目录中运行了几个makefile。我想在用户通过目标makeboth.Is时并行运行32位和64位构建,可以这样做吗?有谁能帮帮忙。
发布于 2020-07-07 14:22:28
安排它,使makeboth将其他两个作为先决条件。
makeboth: make32 make64
@echo makeboth done然后,make -jN makeboth应该进行并行构建。
发布于 2020-07-07 14:34:06
您可以使用-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发布于 2020-07-07 15:06:53
GNUmake允许您使用make的-j参数同时运行两个命令:
您可以通过命令行执行此命令:
其中N是要派生的进程编号
make -j <N> make32 make64此命令将同时运行这两个命令/目标。您甚至可以通过创建一个处理此问题的新make目标来做得更好。回到Makefile:
在N部分提供编号!
makeboth:
make -j <N> make32 make64https://stackoverflow.com/questions/62769191
复制相似问题