Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile中的通用(非文件)模式匹配_Makefile_Design Patterns - Fatal编程技术网

Makefile中的通用(非文件)模式匹配

Makefile中的通用(非文件)模式匹配,makefile,design-patterns,Makefile,Design Patterns,是否可以为非文件名设置通配符目标,例如: build-%: pull-% build-%.stamp pull-%: cd $* ; git log HEAD..origin/master | grep -q . && ( git pull ; $(RM) ../build-$*.stamp ) || true build-%.stamp: cd $* ; ant touch $@ 其思想是调用make build foo,它只会在有新的上游更改时调用构建(这些更改

是否可以为非文件名设置通配符目标,例如:

build-%: pull-% build-%.stamp
pull-%:
  cd $* ; git log HEAD..origin/master | grep -q . && ( git pull ; $(RM) ../build-$*.stamp ) || true
build-%.stamp:
  cd $* ; ant
  touch $@
其思想是调用
make build foo
,它只会在有新的上游更改时调用构建(这些更改会被拉入)

但是,
%
-模式匹配似乎仅适用于文件名,即使在.PHONY中定义扩展表单(“build foo”)时也是如此


我必须使用模板吗,如中所用?

啊!在
build-%
规则后放一个分号


(我没有注意到这个问题,因为我在规则中添加了一个命令:
@echo$@

这在GNUMake 3.81中似乎已经足够好了。你用的是什么牌子的?同样的,GNUmake3.81。像上面那样使用Makefile
makebuildfoo
会导致
make:**。别说了,对我来说还不够好。我现在使用了模板方法,效果很好。