首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >make如何选择要使用的规则

make如何选择要使用的规则
EN

Stack Overflow用户
提问于 2012-05-19 00:28:27
回答 1查看 140关注 0票数 2

所以我这里有一个makefile,看起来像这样

代码语言:javascript
复制
ALL_FILES=$(shell find . -name '*')

install : $(ALL_FILES)

$(INSTALL_LOCATION)/%.sh : %.sh  ;   /bin/usr/install -D $^ $@

$(INSTALL_LCOATION)/% : %   ;   /usr/bin/install -D $^ $@

$(INSTALL_LOCATION)/dir1/% : dir1/%   ;  /usr/bin/install -D $^ $@

我的问题是,第二次安装显然是第一次的超集,但我猜第一次是先运行的,所以第二次被忽略了。然而,第二个不是也是第三个的完全超集吗?

那么make如何选择要使用的规则呢?它会选择最具体的规则吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-19 00:36:59

取决于make的版本。例如,在GNU make 3.82之前的版本中,它将按照模式被声明的顺序搜索模式,并简单地使用第一个匹配的模式,而不考虑特异性。在3.82及更高版本中,GNU make使用最具体的规则,而不考虑声明顺序。下面是一个简单的例子:

代码语言:javascript
复制
all: sub/foo.x

%.x:
    @echo "Prefer first match (stem is $*)."

sub/%.x:
    @echo "Prefer most specific match (stem is $*)."

将输出与gmake 3.81和gmake 3.82进行比较:

代码语言:javascript
复制
$ gmake-3.81 
Prefer first match (stem is sub/foo).
$ gmake-3.82
Prefer most specific match (stem is foo).
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10656363

复制
相关文章

相似问题

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