求助:关于Makefile变量的问题

发布于 2022-09-30 18:38:50 字数 683 浏览 10 评论 0

请看看下面的 Makefile 脚本代码段:

  1. define DOSUBDIR
  2. $(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V))))
  3. $(warning "$(1)" is $(1))
  4. SUBDIR := $(1)/
  5. $(warning "SUBDIR" is $(SUBDIR) )
  6. include $(1)/Makefile
  7. endef
  8. $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D))))

复制代码

问题1、$(warning) 为什么没有输出?
问题2、SUBDIR的值到了被包含进来的那个Makefile中为什么访问不到在 DOSUBDIR 中赋的值?我在被包含进来的那个Makefile中用$(info $(SUBDIR))  结果输出的是空。Makefile 宏定义中的变量值是不是离开了宏就失效了?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情话难免假 2022-10-07 18:38:50

本帖最后由 wangfeifeiwc 于 2011-04-01 11:20 编辑

注意一下,include那一行。看一下看下一个makefile,是不是对你的问题有所帮助。

all:
    @echo 0

include all_test

all_test:
    @echo 1

你注释一下include行,看看其输出结果会有什么不一样。

我这边的情况是:
不注释include行:
1
0
注释include行:
0
1
具体make的工作机理也不是很清楚,gun的make读取makefile时,如果碰到include将暂停当前makefile的读取,但是这个makefile里面,include的子makefile(all_test)并不存在,所以它将把all_test当做一个目标。

绅士风度i 2022-10-07 18:38:50

楼上,但这并没有解释为什么warning 没有输出啊。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文