2013-05-07 108 views
0

我使用Makefile配方中的split命令分割了一个大文件。gnu Makefile中的后期变量扩展

trails : $(OBJ) 
    sort -m $? | accumulate.py --threshold 30 | split -C 10MB -d -a 3 - trail. 

然后,我重命名生成的文件,使其具有.acc扩展名。这个想法是稍后在此扩展中应用隐式规则。

我面临的问题是变量扩展发生在.acc文件生成之前。例如,下面的规则不会产生任何东西:

all: $(wildcard *.acc) trails 
    @echo $? 

使用patsubst功能事先不工作或者是因为我不知道有多少输出文件split将产生。

PS。我分割文件以利用make来平行作业的能力:make -j 16例如。

回答

1

您将不得不使用递归make。在这个makefile中执行分割操作,然后调用递归make来处理其余部分。你的问题并不完全清楚,但我认为你想要的东西是这样的:

all: trials 
     $(MAKE) recurse 

trials: $(OBJ) 
     sort -m ... 

recurse: $(wildcard *.acc) 
     echo $? 
+0

谢谢你,这正是我需要知道的。 – 2013-05-07 20:50:13