首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >GNU如何设置隐式模式作为先决条件

GNU如何设置隐式模式作为先决条件
EN

Stack Overflow用户
提问于 2016-08-11 20:10:40
回答 3查看 373关注 0票数 0

我有一个隐含的规则:

代码语言:javascript
代码运行次数:0
运行
复制
%.so: %.so.5
    qnx_ln $< $@

我意识到,对于另一个目标,我必须将所有.so文件作为该目标的先决条件。

我试过这个:

代码语言:javascript
代码运行次数:0
运行
复制
makegen: $(TEAM_ROOT)HMI_FORGF/src/src.pro module_dirs %.so
    ...

但我得到了输出

*没有规则使目标“%..so”成为“makegen”所需要的。停止播放。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-11 22:23:20

%先决条件模式只能在静态和隐式模式规则中使用,其中它们与目标的相应%部分相匹配;在常规规则中使用%是一个字面字符。

您需要逐字逐句地指定依赖项,除非某些源文件名与.so文件名之间存在某种对应关系,您可以利用这两者之间的对应关系,可能您一开始就已经在使用这两种方法来链接.so文件。

票数 2
EN

Stack Overflow用户

发布于 2016-08-16 07:10:31

正如前面指出的,不可以这样做,因为这不是先决条件模式的工作方式。也许你给了以下的一个想法,并拒绝了它,但我怀疑你可能会发现,以下几个贴切:

代码语言:javascript
代码运行次数:0
运行
复制
%.so.target: %.so.5
        echo $< >> $(BUILD)/so.targets

SO_TARGETS=$(basename $(shell cat $(BUILD)/so.targets))

makegen: $(TEAM_ROOT)HMI_FORGF/src/src.pro module_dirs $(SO_TARGETS)
票数 0
EN

Stack Overflow用户

发布于 2016-08-16 07:16:20

也许您正在寻找一个规则来匹配每个现有的*.so文件?

代码语言:javascript
代码运行次数:0
运行
复制
makegen: $(TEAM_ROOT)HMI_FORGF/src/src.pro module_dirs $(wildcard *.so)
    ...

但是,如果有一些模式可以生成尚未生成这些文件的*.so文件,则它们(显然)将不会被通配符匹配,通配符只检查现有的文件。如果这是您真正想要完成的,那么您可能希望以某种方式枚举实际的文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38905268

复制
相关文章

相似问题

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