首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Make with force snippet覆盖其他文件

使用Make with force snippet覆盖其他文件
EN

Stack Overflow用户
提问于 2015-06-16 17:36:39
回答 1查看 63关注 0票数 0

如果在文件a中找不到指定的目标,我一直在尝试获取生成文件a,以包含另一个生成文件b。我使用this代码片段来尝试实现这一点,但从我放入文件中的回显中,我可以看到,即使在a中找到目标并运行,也可以访问生成文件b。

我在上面的链接中使用的代码片段是:

代码语言:javascript
复制
foo:
        frobnicate > foo

%: force
        @echo "No target found locally, running default makefile"
        @$(MAKE) -f Makefile $@
force: ;

具体地说,当使用makefile b时,我会得到"Nothing to be to“输出,而makefile a的行为符合预期。如下所示:

代码语言:javascript
复制
$ make all  # all target appears in both make files
No target found locally, running default makefile
make[1]: Entering directory `/home/user/currdir' # (b)
make[1]: Nothing to be done for `Makefile'.
make[1]: Leaving directory `/home/user/currdir'
 Local all # (a)

有没有更好的方法来做到这一点?

添加:在向%规则添加了另一个回应后,我发现$@是"Makefile",而它应该是尝试构建的目标。

EN

回答 1

Stack Overflow用户

发布于 2015-06-16 19:41:08

根据您给出的示例,我不能真正理解您的问题;该示例中没有"a“或"b”,只有一个Makefile

但是,您看到的行为是由于GNU make的re-making makefiles功能造成的。当您创建match-anything模式规则时,您必须考虑make想要构建的每个单独的目标或先决条件都将匹配该规则。这是一个很大的负担。

您可以通过为其创建显式规则来避免重新生成的makefile匹配,例如:

代码语言:javascript
复制
Makefile: ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30863872

复制
相关文章

相似问题

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