#example to parallel running
#Makefile
a:
@$(SHELL) -c 'for((i=1;i<=10;i++));do sleep 1; echo I am a ;done '
b:
@$(SHELL) -c 'for((i=1;i<=10;i++));do sleep 1; echo I am b ;done '
PC$ make a b
I am a
I am a
I am a
I am a
I am a
I am a
I am a
I am a
I am a
I am a
I am b
I am b
I am b
I am b
I am b
I am b
I am b
I am b
I am b
I am b
PC$ make a b -j2
I am a
I am b
I am a
I am b
I am a
I am b
I am a
I am b
I am b
I am a
I am b
I am a
I am b
I am a
I am b
I am a
I am b
I am a
I am b
I am a
说明:命令make a b 是按着顺序执行的,所花的时间是20。命令make a b -j2是并行执行,所花的时间是10秒。因为a任务和b任务不存在依赖的关系。两者是可以并行执行的。
如果是依赖的话:
#Makefile1
a:b
@$(SHELL) -c 'for((i=1;i<=10;i++));do sleep 1; echo I am a ;done '
b:
@$(SHELL) -c 'for((i=1;i<=10;i++));do sleep 1; echo I am b ;done '
PC$make -f Makefile1 -j2
I am bI am b
I am b
I am b
I am b
I am b
I am b
I am b
I am b
I am b
I am a
I am a
I am a
I am a
I am a
I am a
I am a
I am a
I am a
I am a
说明:有依赖关系的话,当然是按着依赖关系顺序执行了。
再看
#Makefile2
a:b c
@$(SHELL) -c 'for((i=1;i<=10;i++));do sleep 1; echo I am a ;done '
b:
@$(SHELL) -c 'for((i=1;i<=10;i++));do sleep 1; echo I am b ;done '
c:
@$(SHELL) -c 'for((i=1;i<=10;i++));do sleep 1; echo I am c ;done '
PC$make -f Makefile2 -j3
I am b
I am c
I am b
I am c
I am b
I am c
I am b
I am c
I am b
I am c
I am b
I am c
I am b
I am c
I am b
I am c
I am b
I am c
I am b
I am c
I am a
I am a
I am a
I am a
I am a
I am a
I am a
I am a
I am a
I am a