网络书屋(Web Reading Room)

A blogging framework for hackers.

模块分割--工厂机制

  1. map
  2. reduce
  3. deploy(by makefile)

map—-do or map—action

1
2
3
4
5
6
7
8
FC=gfortran
FFLAGS=-O3
split : ./f90split.f90 ./output/cmd.sh
    $(FC) $(FFLAGS) $^ -o $@
    mv $@ ./output/
    /bin/sh ./output/cmd.sh

.PHONY: clean

不是不适合,是超级适合,只不过你不会而已

makefile:(负责让对应的文件夹去做对应的事情)

1
2
3
4
5
6
7
8
9
FC=gfortran
FFLAGS=-O3
split : ./f90split.f90 ./output/cmd.sh
    $(FC) $(FFLAGS) $< -o $@                # 造出一个工人出来!
    cp $@ ./output/          # 把一个高级技术工人调到现场 去干活去!  最好用cp 这样就可以派到其他工厂去了
    cd ./output/ &&sh cmd.sh#切换到对应目录下 去做他该做的事情就可以了(而不是原先你想的

    # sh .output/cmd.sh 这样是在当前的目录下产生所有的东西 而不是对应的目录)
.PHONY: clean

在我的output目录下新建了一个

cmd.sh:(他只做本目录下的内容)

1
2
3
4
5
6
7
8
9
#!/bin/sh
# sh cmd.sh

for i in `ls -l /home/incompact3dNew/channel|grep f90|awk '{print $NF}'`;
do
    file=/home/incompact3dNew/channel/$i;
#    echo $file;
     ./split $file
done;