#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