2011-12-02 76 views
1

想象我有被归类在我的脑海,但不能由任何一种命名方案来区分文件,并且他们居住在同一个目录下:生成文件与类别

apple cherry celery onion 

我有两个规则,一个食谱派和一个汤。

如果我实现这些食谱潜规则:

fruits:= apple cherry 
vegetables:= celery onion 

%.soup : % 
     @echo "making soup" 
     cp $< [email protected] 

%.pie : % 
     @echo "making pie" 
     cp $< [email protected] 

然后我允许建造可怕的饭菜:

> touch celery 
> make celery.pie 
making pie 
cp celery celery.pie #bleech this should not be allowed 

但是,如果使用明确的规则:

fruits:= apple cherry 
vegetables:= celery onion 

pies:=$(addsuffix .pie,$(fruits)) 
soups:=$(addsuffix .soup,$(vegetables)) 

$(pies) : $(fruits) 
     @echo "making pie" 
     cp $< [email protected] 


$(soups) : $(vegetables) 
     @echo "making soup" 
     cp $< [email protected] 

我被迫建立了现实中不存在的依赖关系:

> touch apple 
> make apple.pie 
make: *** No rule to make target `cherry', needed by `apple.pie'. Stop. 

如何判断文件类别?

回答