1

私は現在、を.root使用してファイルをマージするためのほぼ同一のルール/レシピをいくつか含むMakefileを作成していますhadd。これらをより少ないルールに凝縮する良い方法はありますか?4〜6の数字はディレクトリパスの1〜4と一致しない%ため、この場合にどれほど役立つかわかりません。data[4-6].done

どうもありがとう

[Makefile]

DIR=/hdfs/store/user/$(USER)

DATA.root : data1.done data2.done data3.done data4.done data5.done data6.done
    hadd DATA.root $(addsuffix .root,$(basename $^))
    rm $(addsuffix .root,$(basename $^))
    rm $^

data1.done :
    hadd data1.root $(DIR)/de2012A_loose2Aug-DATA/1/*.root
    touch data1.done

data2.done :
    hadd data2.root $(DIR)/de2012A_loose2Aug-DATA/2/*.root
    touch data2.done

data3.done :
    hadd data3.root $(DIR)/de2012B_loose2Aug-DATA/1/*.root
    touch data3.done

data4.done :
    hadd data4.root $(DIR)/de2012B_loose2Aug-DATA/2/*.root
    touch data4.done

data5.done :
    hadd data5.root $(DIR)/de2012B_loose2Aug-DATA/3/*.root
    touch data5.done

data6.done :
    hadd data6.root $(DIR)/de2012B_loose2Aug-DATA/4/*.root
    touch data6.done
4

1 に答える 1

1

私はそれをクラックしますが、あなたはあなたのデザインを再考するかもしれません。

DIR=/hdfs/store/user/$(USER)

DATA.root : data[1-6].done
    hadd DATA.root $(^:.done=.root)
    rm $(^:.done=.root)
    rm $^

data1.done data2.done : PATHLEFT=A
data3.done data4.done data5.done data6.done : PATHLEFT=B
data1.done : PATHRIGHT=1
data2.done : PATHRIGHT=2
data3.done : PATHRIGHT=1
data4.done : PATHRIGHT=2
data5.done : PATHRIGHT=3
data6.done : PATHRIGHT=4

data%.done : 
    hadd data1.root $(DIR)/de2012$(PATHLEFT)_loose2Aug-DATA/$(PATHRIGHT)/*.root
    touch $@

(はい、私は知っています、私はさらに2つまたは3つの行を絞り出すことができましたが、私はそれをあまりにも不可解にしたくありません。)

于 2012-08-03T21:48:51.320 に答える