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.
如何判断文件类别?