首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于合并带有"hadd“的根文件的Makefile

用于合并带有"hadd“的根文件的Makefile
EN

Stack Overflow用户
提问于 2012-08-04 05:21:36
回答 1查看 2.3K关注 0票数 1

我目前正在写一个Makefile,它有几个几乎相同的规则/配方来使用hadd合并.root文件。有没有一种好的方法可以将这些规则压缩成更少的规则?我不确定%对于案例data[4-6].done有多大用处,因为数字4-6与目录路径中的1-4不匹配。

非常感谢

代码语言:javascript
复制
[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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-04 05:48:51

我将尝试一下,但您可能会重新考虑您的设计。

代码语言:javascript
复制
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 $@

(是的,我知道,我可以再挤出两三行,但我不想把它弄得太神秘。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11803461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档