对 makefile 中 .NOTPARALLE 的学习体会
上例子
事先准备好三个脚本:
a01.sh b01.sh c01.sh:
脚本内容如下, 即每睡眠一秒钟后再输出内容:
a01.sh
for ((i=0;i<10;i++)); do @echo "a01..." $i; sleep 1; done;
b01.sh
for ((i=0;i<10;i++)); do @echo "b01..." $i; sleep 1; done;
c01.sh
for ((i=0;i<10;i++)); do @echo "c01..." $i; sleep 1; done;
makefile 的内容如下:
.PHONY:all all: a b c a: ./a01.sh b: ./b01.sh c: ./c01.sh
如果仅仅运行 make , 则 a01.sh b01.sh c01.sh 几个脚本还是串行执行的。
但是如果执行 make --jobs=3,得到的结果是:
a01...1
b01...1
c01...1
a01....2
b01....2
c01....2
...
成为并行执行。
但是如果在此makefile 加入 .NOTPARALLEL,则:
.NOTPARALLEL
.PHONY:all all: a b c a: ./a01.sh b: ./b01.sh c: ./c01.sh
则 即使 make --jobs=3 执行,a01.sh b01.sh c01.sh 几个脚本仍然是串行执行的。
结束
结束